爬取网站中的邮箱保存到本地txt文件中

本文展示了一个使用Java编写的程序示例,该程序能够从指定网页中抓取电子邮件地址,并将这些邮件地址保存到本地文件中。通过发送HTTP请求并解析返回的内容,利用正则表达式匹配出有效的邮件地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class MailGroup {

    public static void main(String[] args) throws IOException {
        URL url = new URL("http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=1040203&docId=64308280&qb=cmVjb3JkIGVtYWls&enc=utf8§ion=kin&rank=3&search_sort=0&spq=1&pid=RznU4wpySEdssaITnYKssssssu4-207842&sid=UzPWsQpyVooAAGD@GRg");
        HttpURLConnection conn=(HttpURLConnection) url.openConnection();
        if(conn.getResponseCode()==200){
            InputStream is=conn.getInputStream();
            BufferedReader bf = new BufferedReader(new InputStreamReader(is));
            Pattern p = Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+");
            String str=null;
            BufferedWriter bw=null;
            while((str=bf.readLine())!=null){
                Matcher m =p.matcher(str);
                while(m.find()){
                    System.out.println(m.group());
                    String li=m.group();
                        FileOutputStream f = new FileOutputStream("D:/mail.txt",true);
                        OutputStreamWriter ow = new OutputStreamWriter(f,"utf-8");
                        bw=new BufferedWriter(ow);
                        bw.write(m.group());    
                        bw.close();
                        ow.close();
                        f.close();
                }
            }
            
        }
        else{
            System.out.println("未响应");
        }
        
    }
}

抱歉,我是AI语言模型,无法访问网络和本地文件系统,无法编写和运行Python代码。以下是Python爬取QQ邮箱邮件内容并保存为Excel的思路和部分代码: 1. 登录QQ邮箱并获取邮件列表 使用selenium库模拟登录QQ邮箱,获取邮件列表。具体步骤可以参考以下代码: ``` from selenium import webdriver # 打开浏览器 driver = webdriver.Chrome() # 打开QQ邮箱登录页面 driver.get('https://mail.qq.com/') # 输入用户名和密码并点击登录按钮 username = driver.find_element_by_id('u') password = driver.find_element_by_id('p') username.send_keys('your_username') password.send_keys('your_password') login_btn = driver.find_element_by_id('login_button') login_btn.click() # 进入收件箱并获取邮件列表 driver.switch_to.frame('mainFrame') inbox_link = driver.find_element_by_link_text('收件箱') inbox_link.click() mail_list = driver.find_elements_by_xpath('//table[@class="i M"]//tr[@class="to"]') ``` 2. 遍历邮件列表并获取邮件内容 遍历邮件列表,获取每封邮件的主题、发件人、收件人、发送时间和邮件正文。具体步骤可以参考以下代码: ``` import re from bs4 import BeautifulSoup mail_data = [] for mail in mail_list: # 获取邮件主题 subject = mail.find_element_by_class_name('subject').text.strip() # 获取发件人和收件人 to = mail.find_element_by_class_name('to').text.strip() sender = re.search('<(.*?)>', to).group(1) recipient = re.search('To: (.*?) <', to).group(1) # 获取发送时间 sent_time = mail.find_element_by_class_name('time').text.strip() # 进入邮件详情页面并获取邮件正文 mail_link = mail.find_element_by_xpath('./td[3]/div/a') mail_link.click() driver.switch_to.window(driver.window_handles[-1]) soup = BeautifulSoup(driver.page_source, 'html.parser') mail_content = soup.find('div', {'id': 'mailContentContainer'}).get_text().strip() # 保存邮件数据 mail_data.append([subject, sender, recipient, sent_time, mail_content]) # 关闭邮件详情页面 driver.close() driver.switch_to.window(driver.window_handles[0]) ``` 3. 将邮件数据保存为Excel文件 使用pandas库将邮件数据保存为Excel文件。具体步骤可以参考以下代码: ``` import pandas as pd df = pd.DataFrame(mail_data, columns=['Subject', 'Sender', 'Recipient', 'Sent Time', 'Content']) df.to_excel('mail_data.xlsx', index=False) ``` 完整代码如下: ``` from selenium import webdriver import re from bs4 import BeautifulSoup import pandas as pd # 打开浏览器 driver = webdriver.Chrome() # 打开QQ邮箱登录页面 driver.get('https://mail.qq.com/') # 输入用户名和密码并点击登录按钮 username = driver.find_element_by_id('u') password = driver.find_element_by_id('p') username.send_keys('your_username') password.send_keys('your_password') login_btn = driver.find_element_by_id('login_button') login_btn.click() # 进入收件箱并获取邮件列表 driver.switch_to.frame('mainFrame') inbox_link = driver.find_element_by_link_text('收件箱') inbox_link.click() mail_list = driver.find_elements_by_xpath('//table[@class="i M"]//tr[@class="to"]') # 遍历邮件列表并获取邮件内容 mail_data = [] for mail in mail_list: # 获取邮件主题 subject = mail.find_element_by_class_name('subject').text.strip() # 获取发件人和收件人 to = mail.find_element_by_class_name('to').text.strip() sender = re.search('<(.*?)>', to).group(1) recipient = re.search('To: (.*?) <', to).group(1) # 获取发送时间 sent_time = mail.find_element_by_class_name('time').text.strip() # 进入邮件详情页面并获取邮件正文 mail_link = mail.find_element_by_xpath('./td[3]/div/a') mail_link.click() driver.switch_to.window(driver.window_handles[-1]) soup = BeautifulSoup(driver.page_source, 'html.parser') mail_content = soup.find('div', {'id': 'mailContentContainer'}).get_text().strip() # 保存邮件数据 mail_data.append([subject, sender, recipient, sent_time, mail_content]) # 关闭邮件详情页面 driver.close() driver.switch_to.window(driver.window_handles[0]) # 将邮件数据保存为Excel文件 df = pd.DataFrame(mail_data, columns=['Subject', 'Sender', 'Recipient', 'Sent Time', 'Content']) df.to_excel('mail_data.xlsx', index=False) # 关闭浏览器 driver.quit() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值