(详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium) 您所在的位置:网站首页 怎样查看电子邮箱内容是多少 (详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

(详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

2024-07-07 02:35| 来源: 网络整理| 查看: 265

需求:最近有一个需求,需要将163邮箱收件箱里面的所有邮件的内容全部copy下来,整理到一个word里面,不多也就28页的邮件(不要问我为什么有这需求,不告诉你),自己手动去ctrl+ cv 的话,估计要搞吐。然后就想能不能用python的爬虫来实现,虽然过程比较苦(后期改bug改的要吐了)。但是会后还是将需求实现了。这基本也算是入门了 urllib、requests、selenium这几个py库。以及辅助的 BeautifulSoup4、python-docx等处理html和word 的py库。好了话不多说,开始我的表演。

总结需求:

1.实现163邮箱自动登录

2.进入收件箱,然后获取收件箱列表

3.通过收件箱列表,依次点击进入邮件,获取邮件里面的邮件内容。

3.然后将获取的邮件内容,写入word

经历了这次疯狂的查文档查资料,最后总结,现在网上的相关文档检测太多了,但是最官方的还是,官方文档(英文),实在看不懂的,可以翻译,或者查找看一看有没有中文的官方文档。 以上用到的库,我基本上都是参考官方中文文档的,下面的博客中会给出文档链接。学会看官方文档是非常有帮助的

一、通过Urllib实现

 urllib这是python内置用于处理http相关请求库,官方文档:https://docs.python.org/3/library/urllib.request.html#module-urllib.request  。 性能方便不说,因为我暂时还没感受到,urllib基本上可以解决多数的爬虫问题。我最开始就是用urllib的。虽然后面没有解决问题。但是大部分问题它是解决了的。

    刚开始我是先百度了一下, 看了看有没有类似的需求,果然有类似的需求,一共找到了两篇,

第一篇

第二篇

第一篇是通过 Firefox浏览器做的测试,第二篇博客是在第一篇记得基础上通过Chrome浏览器做的测试。

他们的需求:

1. 模拟163邮箱的登陆

2. 获取登陆后的收件箱页面

3. 获取页面中的邮件信息

分析实现

基本实现可以参考 第一篇    第二篇

总结思路:

1. 用浏览器登陆邮箱以获取请求登陆的url以及收件箱网页的url

2. 向该url发送登陆请求,获得response,并利cookie缓存登陆的信息及状态

3. 提取response中的sid码,这是下一步请求所需要的

4. 利用sid码和cookie重新请求,获得响应,重定向至收件箱网页,获取页面信息

5. 提取收件箱列表信息

以上用urllib实现自动登录到进入收件箱,再到获取收件箱列表的信息,代码如下:

import urllib.request import re import http.cookiejar import urllib.parse import requests import json class Mail: def __init__(self): self.loginUrl = "https://mail.163.com/entry/cgi/ntesdoor?df=mail163_letter&from=web&funcid=loginone&iframe=1&language=-1&passtype=1&product=mail163&net=t&style=-1&race=-2_42_-2_hz" # 设置代理,以防止本地IP被封 self.proxyUrl = "http://202.106.16.36:3128" # 初始化 sid self.sid = "" self.username = '*******' self.pwd = '*******' self.loginHeaders = { 'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", 'Accept-Language': "zh-CN,zh;q=0.9", 'Connection': "keep-alive", 'Host': "mail.163.com", 'Referer': "http://mail.163.com/", 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" } self.post = { 'savelogin': "0", 'url2': "http://mail.163.com/errorpage/error163.htm", 'username': self.username, 'password': self.pwd } # 对post编码转换 self.postData = urllib.parse.urlencode(self.post).encode('utf8') # 使用http.cookiejar.CookieJar()创建CookieJar对象 self.cookie = http.cookiejar.CookieJar() # 使用HTTPCookieProcessor创建cookie处理器,并以其为参数构建opener对象 self.handle = urllib.request.HTTPCookieProcessor(self.cookie) print("--" * 100)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有