用python语言爬取qq邮箱邮件内容并保存为excel
时间: 2024-05-08 21:15:10 浏览: 227
抱歉,我是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()
```
阅读全文