采用selenium和beautifulsoup获取163邮箱邮件内容

采用selenium和beautifulsoup获取163邮箱所有未读邮件内容

说明:23年暑假找了个公司赚点生活费。其中我的任务是copy163邮箱的邮件,然后将邮件的内容复制到公司的销售系统(53快服)。

在这里插入图片描述

任务可以分以下几步:
1,复制邮件内容;
2,根据邮件内容分割,提取信息;
3,将信息填到客服系统。
如果不使用脚本,原始人纯手戳,每天一两来条邮件,个人感觉还是可以接受的,那么一天两千多条,就是不吃饭也干不完。(下面这个图是每天要录入系统的邮件数据量)

在这里插入图片描述

当我接到这个任务的时候离数据爆发增长还有不到一周时间。(果然公司是要招一个牛马来干活)为此在前两天干完活的闲余时间琢磨如何使用python帮我完成这个任务。

经过我大量查找网上的相关资料,总结为以下几个方法

  • 方法一、通过Urllib实现

    这种方法主要是应用requests请求的方法,获取邮件需要找到对应的url链接。关键步骤如下:

    • 1、模拟登录163邮箱,并获取收件箱邮件的url;
    • 2、获取cookie信息;
    • 3、提取邮件对应的sid数据;
    • 4、利用sid和cookie重新请求,获得响应;
    • 5、提取收件箱列表信息。
  • 方法二、使用第三方的邮件协议

    这种方法需要邮箱打开第三方的邮件协议。有对应的第三方库专门处理邮件。由于我当时的邮箱没有权限开打开第三方邮件协议,因此就没考虑这种方法。

  • 方法三、使用selenium模拟登录邮箱,获取网页信息,然后提取

    selenium的用法很接近于人的操作习惯,实现的过程主要分为两步:

    • 1、使用selenium模拟登录邮箱;
    • 2、使用beautifulsoup处理网页,提取未读邮件的信息。
  • 方法四、模拟点击,模拟复制邮件,然后提取信息

    这个是类似selenium的思路想到的。大量的邮件信息提取,我们可以人为打开浏览器,进入163收件箱邮件列表页,然后使用pyautoguipyperclip模拟键鼠操作,循环复制、粘贴、保存每一封邮件。

传送门

方法一的实现可以参考我的这篇文章:使用selenium和requests的方法获取163邮箱的所有邮件

方法四的实现可以参考我的这篇文章:采用pyautogui和pyperclip获取163邮箱邮件内容

方法四是很容易想到的,程序执行过程和人的操作过程一模一样,简单粗暴。我们这里主要介绍使用selenium模拟登录邮箱,获取网页信息。

方法三可分为以下两个步骤

  1. 使用selenium模拟登录邮箱;
  2. 使用beautifulsoup处理网页,提取未读邮件的信息。

Selenium和Requests

Selenium和Requests是两个用途不同的工具,主要用于不同的Web应用程序自动化任务。

  1. Selenium:
    • 用途:Selenium主要用于自动化Web应用程序的测试和交互。它可以模拟用户在浏览器中与Web应用程序进行交互的行为,如点击、填写表单、提交数据等。Selenium适用于需要在真实浏览器环境下模拟用户行为的场景。
    • 工作原理:Selenium通过控制浏览器来执行操作,它会打开一个浏览器窗口,并在其中加载和操作页面。这使得Selenium能够模拟用户真实的浏览器体验,并进行相关的测试和自动化任务。
    • 优点:
      • 模拟真实用户行为,更接近真实环境。
      • 跨浏览器支持,可以在多种浏览器上运行。
      • 定位元素能力强,可以准确地定位并操作页面上的元素。
      • 支持多种编程语言。
  2. Requests:
    • 用途:Requests是一个用于发送HTTP请求的库,用于从Web服务端获取数据。它主要用于处理Web API调用、爬取网页内容、发送POST请求等。
    • 工作原理:Requests通过HTTP协议与服务器进行通信,发送请求并接收响应。它不加载页面或执行JavaScript,仅处理HTTP请求和响应的数据。
    • 优点:
      • 简单易用,学习曲线较低。
      • 可以发送各种类型的HTTP请求(GET、POST等)并处理响应。
      • 轻量级,适用于快速获取和处理Web数据。

总结: Selenium适用于模拟用户与Web应用程序的交互,并进行自动化测试,包括复杂的JavaScript应用程序。而Requests则适用于发送HTTP请求,从Web服务端获取数据。两个工具在使用场景、功能和工作原理上有所区别,开发人员根据需求选择合适的工具来完成相应的任务。

在处理163邮件登录和获取邮件的这个任务如果采用requests处理过程会比较麻烦,还可能会面对各种反扒机制,从速度上来讲,还是requests更快,对于新手而言还是更推荐Selenium。

使用selenium模拟登录邮箱

登录的过程比较简单,需要注意的是提交用户名和密码的元素在iframe标签内,需要先进入iframe标签才能定位到我们需要交互的元素

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
from selenium.webdriver import ActionChains

mail_url='https://mail.163.com/'

email='your_uesrname'#邮箱用户名
password='your_password'#邮箱密码
#options = webdriver.ChromeOptions()
#options.add_experimental_option('excludeSwitches', ['enable-logging'])

driver = webdriver.Chrome()
driver.get('https://mail.163.com/')#打开浏览器,并打开163网站

# 因为登录位置处于iframe标签中,所以要切换进去

iframe=driver.find_element(By.TAG_NAME, "iframe")
driver.switch_to.frame(iframe)#进入iframe标签

#提交邮箱用户名和密码,并登录
driver.find_element(By.NAME, "email").send_keys(email)
driver.find_element(By.NAME, "password").send_keys(p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值