博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python爬虫与模拟登录
阅读量:4092 次
发布时间:2019-05-25

本文共 1873 字,大约阅读时间需要 6 分钟。

借用cookie进行登录验证的原理

一般情况用户使用浏览器进行登录操作,认证通过后服务器返回给用户一个cookie用来保存登录态。cookie是一些经过加密的键值对,在服务器端解密后能够提取到一些用户信息。cookie值在浏览器中按F12键后,输入密码点击登录后可以查看。如下图所示:

这里写图片描述

利用requests包进行登录代理

  • 我们首先将浏览器里复制到的cookie字符串进行处理,转化成为Python的字典格式。

  • 然后就是拼接要爬取页面的url字符串

  • 有了爬取页面的url之后,利用requests模块将url和cookie发送给服务端

  • 如果上一步执行顺利的话,s.text事实上已经是登录后网页的源码了。为了方便提取数据,我们引入etree模块,对s.text进行转换,这样就能利用xpath对标签进行精准选择了。

  • 获取标签xpath。chrome浏览器鼠标在目标内容处右键->查看->在高亮源码处右键->copy->xpath。selector.xpath()返回值是一个list,千万要注意呀!

#coding=utf-8   import re  import os  import timeimport sysimport reimport urllib2import urllibimport requestsimport cookielibfrom lxml import etreereload(sys)sys.setdefaultencoding("utf8")####################################if __name__ == '__main__':    cookies = {}    raw_cookies = """    # your own cookies here!    """    for line in raw_cookies.split(';'):        key, value = line.split('=', 1)        cookies[key]=value    #print cookies    for i in range(1, 45):        if (i == 1):            myurl="http://rs.xidian.edu.cn/home.php?mod=spacecp&ac=plugin&id=bt:history"            s = requests.get(myurl, cookies=cookies)            selector = etree.HTML(s.text)            for j in range(9, 32):                with open('1.txt', 'a') as f:                    f.write(selector.xpath('//*[@id="ct"]/div[1]/div/div[1]/table/tbody/tr['+str(j)+']/td[3]')[0].text+'\r\n')                    f.close()        else :            myurl = "http://rs.xidian.edu.cn/home.php?mod=spacecp&ac=plugin&id=bt:history&page="+str(i)            s = requests.get(myurl, cookies=cookies)            selector = etree.HTML(s.text)            for j in range(2, 32):                with open('1.txt', 'a') as f:                    f.write(selector.xpath('//*[@id="ct"]/div[1]/div/div[1]/table/tbody/tr['+str(j)+']/td[3]')[0].text+'\r\n')                    f.close()

如果过程顺利的话,这时候应该已经在 1.txt 文件里有我们想要的数据了。本文将数据的获取和处理解耦合,至于怎么处理,排成怎样的格式,有太多方法。

你可能感兴趣的文章
C#代码实现把网页文件保存为mht文件
查看>>
Android利用Fiddler进行网络数据抓包
查看>>
Git常用命令及优秀博客
查看>>
vim-缓存区中打开另外一个文件的方法
查看>>
UrlUtils.PopUpUrl
查看>>
ubuntu下安装apidoc
查看>>
正则表达式30分钟入门教程
查看>>
[再寄小读者之数学篇](2014-07-27 打印错误吧)
查看>>
剑指Offer面试题:16.合并两个排序的链表
查看>>
Hadoop学习笔记—21.Hadoop2的改进内容简介
查看>>
【阿里面试系列】Java线程的应用及挑战
查看>>
echo > 和 echo >>的区别
查看>>
UVA10051
查看>>
我的第一个python web开发框架(41)——总结
查看>>
Delphi-IOCP学习笔记<二>====IOCP基本函数介绍和理解
查看>>
查询语句替换字段中某些字符
查看>>
Netty 实现HTTP文件服务器
查看>>
朴素贝叶斯文本分类简单介绍
查看>>
Devexpress GridView 列中显示图片
查看>>
windows本地提权对照表(转载)
查看>>