2023年6月27日发(作者:)
python爬⾍-获取个⼈⽹易邮箱所有邮件列表信息最近开始了python爬⾍的学习,这⾥带来利⽤python实现⽹易163邮箱个⼈收件箱列表信息的爬取的⼩项⽬,刚开始学习,写的不好的地⽅,望⼤神指正,诚恳学习。主要内容1. 模拟163邮箱登录2. 获取登录后的收件箱页⾯3. 分析页⾯得到所有邮件的列表的信息主要思路经过对163邮箱的登陆过程的分析,其登陆过程需要:1. ⼿动登录获得登录过程的信息2. 分析登陆过程所需的参数3. 向登录界⾯发送登录请求,POST ⼀系列参数,获得响应,及登录的cookie4. 提取登录所需要的sid码5. 利⽤sid码和cookie重新请求,获得响应,重定向⽹页,获取页⾯信息6. 利⽤正则表达式提取相关信息接下来为⼤家介绍详细的过程。前期准备然后选择⽹络选项,这是时空的,然后输⼊账号密码登录,登陆后会发现⽹络选项中出现下图所⽰拉到最上边我们会发现⼀条post的⽇志,这就是登录时提交的参数信息。点击进⼊这条⽇志,就会显⽰消息头,请求⽹址,参数等。点击参数选项会看到⼀个表单数据,这个⾥边就记录了你提交的 ⽤户名,密码,以及产⽣错误跳转的url。这时细⼼的你可以看到地址栏的URL已经变了,⽽且在URL中有⼀串名为sid的参数/js6/?sid=XCwPLNlNiskqLJBOvaNNyAURxrosaJnJ&df=mail163_lette这个sid码就是我们登录的关键,下⾯我来说明怎么得到这个sid码。获取sid码刚才我们选中了那个post⽇志,选择消息头,我们可以看到这次⽇志请求⽹址这⾥请求的⽹址和我们⽬前所在的⽹址并不⼀样,这说明我们登陆时经过了这么⼀个中转的⽹址,想看到这个⽹址下是什么,很简单,点开上⾯的响应选项你就可以看到这个⽹址下是什么内容。通过这个响应我们可以发现,我们提交的参数中并没有这个sid码,但是在响应中出现了这个sid码,因此这个sid码使我们登陆所需要的。但是这个sid码只在本次登录有效,并不能⼀劳永逸,所以我们每次登录都需要通过这个中转界⾯来获取这个sid码。这是我们就需要来获取这个页⾯的源码并提取这个sid码。下⾯附上我的代码。# -*- coding:utf-8 -*-import urllibimport urllib2import reimport cookielib#163邮箱类class MAIL: #初始化 def __init__(self): #获取登录请求的⽹址,也就是上边提到的请求⽹址 #设置代理,以防⽌本地IP被封 rl = "202.106.16.36:3128" #初始化sid码 = "" #第⼀次登陆所需要的请求头request headers,这个在消息头⾥的请求头有 eaders = { 'Host':"", 'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0", rl = "/entry/cgi/ntesdoor?df=mail163_letter&from=web&funcid=loginone&iframe=1&language=-1&passtype=1&product=m 'Accept':"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", 'Accept-Language':"zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3", 'Accept-Encoding':"gzip, deflate, br", 'Referer':"/", 'Connection':"keep-alive", } #设置⽤户名和密码,输⼊⾃⼰的账号密码 me = '*******' = '*******' #post所包含的参数也就是参数⾥的表单数据 = { 'savelogin':"0", 'url2':"/errorpage/", 'username':me, 'password': } #对post编码转换 ta = ode() #设置代理 = andler({'http':rl}) #设置cookie对象,会在登录后获取登录⽹页的cookie = kieJar() #设置cookie处理器 Handler = okieProcessor() #设置登录时⽤到的opener,相当于我们直接打开⽹页⽤的urlopen = _opener(Handler,,ndler) #模拟登陆并获取sid码 def loginPage(self): #发出⼀个请求 request = t(rl,ta,eaders) #得到响应 response = (request) #需要将响应中的内容⽤read读取出来获得⽹页代码,⽹页编码为utf-8 content = ().decode('utf-8') #打印获得的⽹页代码 print content#⽣成邮箱爬⾍对象mail = MAIL()#调⽤loginPage⽅法来获取⽹页内容age()登陆成功的话可以看到输出的结果为
评论列表(0条)