python+selenium爬取QQ邮件发件人、时间、内容等信息

本文介绍如何使用Selenium库爬取QQ邮箱的发件人、发送时间和邮件内容,包括登录处理、账号验证及页面操作技巧,适合对爬虫技术感兴趣的读者。

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

目的:爬取QQ邮件发件人、时间、内容等信息

注意问题

1.注意修改qq账号和密码

#3.输入账号密码
u = browser.find_element_by_id('u')
u.send_keys('')#---------------此处填QQ号
p = browser.find_element_by_id('p')
p.send_keys('')#----------------此处填QQ邮箱密码

2.注意自己是否有验证密码,如果没有则删除

#5.设置验证密码
browser.switch_to.default_content()
ap = browser.find_element_by_name('pp').send_keys('x86712526')
browser.find_element_by_id('btlogin').click()

3.注意自己的chromedriver的加载位置

browser = webdriver.Chrome(executable_path="/chromedriver")

细节处理

这里在邮件打开位置是选择新开一个tab页面,然后跳到那个页面进行爬取,获取信息完毕后再跳回原来的页面,这么做的原因是因为如果你在原来的页面进行操作,很容易出现indexError,具体在这里不细讲,可以自己尝试后来感受这个道理

完整代码

from selenium import webdriver
from selenium.webdriver import ActionChains

#1.打开登陆页面
browser = webdriver.Chrome(executable_path="/chromedriver")
browser.implicitly_wait(10)
browser.get('https://mail.qq.com/')

#2.切换到账号密码登陆
login_frame = browser.find_element_by_id('login_frame')
browser.switch_to.frame(login_frame)
browser.find_element_by_id('switcher_plogin').click()
#3.输入账号密码
u = browser.find_element_by_id('u')
u.send_keys('')#---------------此处填QQ号
p = browser.find_element_by_id('p')
p.send_keys('')#----------------此处填QQ邮箱密码
#4.点击登陆按钮
browser.find_element_by_id('login_button').click()
#5.设置验证密码
browser.switch_to.default_content()
ap = browser.find_element_by_name('pp').send_keys('')#----------------此处填QQ邮箱验证密码
browser.find_element_by_id('btlogin').click()



#5.点击收信
browser.find_element_by_id('folder_1').click()
#6.切换到收信iframe框架里
main_frame = browser.find_element_by_id('mainFrame')
browser.switch_to.frame(main_frame)


#这里选取新开一个网页的原因:防止因为刷新后,原来页面元素找不到,所以建议使用下面的方法
#获取第一个tab页
h = browser.current_window_handle
#通过css选择器,找到我们邮件列表里面的内容
email_eles = browser.find_elements_by_css_selector('.toarea .F, .toarea .M')
for i in range(len(email_eles)):
    #获取邮件列表的邮件项
    email_ele = browser.find_elements_by_css_selector('.toarea .F, .toarea .M')[i]
    #右击邮件项
    ActionChains(browser).context_click(email_ele).perform()
    #然后选择在新窗口打开
    browser.find_elements_by_css_selector('.menu_item')[1].click()
    #切换到邮件详情页tab
    email_detail_handle = browser.window_handles[1]
    browser.switch_to.window(email_detail_handle)
    #切换到内容部分
    main_frame = browser.find_element_by_id('mainFrame')
    browser.switch_to.frame(main_frame)
    #获取具体的信息
    try:
        send_title = browser.find_elements_by_css_selector('.sub_title')[0].text
        send_author = browser.find_elements_by_css_selector('.grn')[1].text
        send_time = browser.find_elements_by_css_selector('#local-time-caption')[0].text
        content = browser.find_elements_by_css_selector('#mailContentContainer')[0].text
        print([send_title, send_author, send_time, content])
    except IndexError:
        print('该元素无法读取!')
        pass
    #关闭tab页
    browser.close()
    #回到第一个tab页,即邮件列表tab
    browser.switch_to.window(h)
    #又切换到列表部分
    main_frame = browser.find_element_by_id('mainFrame')
    browser.switch_to.frame(main_frame)

browser.quit()

欢迎有任何问题评论!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值