pyhon3.4 requests模块模拟post登陆csdn
来源:互联网 发布:sql注入电子书 编辑:程序博客网 时间:2024/04/30 03:12
pyhon3.4 requests模块的使用
之前一直在研究爬虫的使用,网上的有关python爬虫的资料虽然虽然比较多,但是也很杂,有些程序使用的urllib2,有些使用http.client,比较杂,说的比较模糊,研究了一个星期才明白怎么post登陆抓取登陆信息,以及爬虫主要注意的一些方面
- POST的抓取
我使用的是Fiddler进行抓包分析,可以获得申请的requests,返回的response里面的数据进行分析,判断是否成功登陆,网上说的r.status 等等这些都实际上不能作为是否成功登陆的的依据。 - cookie和headers的包装
有些网站会进行cookies和headers的判断所以进行requests时候必须包含已经设计的headers和cookies
cookies是保证登陆数据的凭证,使用requests.Session()来自动保存cookie,你说需要做的就是先get一遍网页来获得cookie从而保证post数据的时候,cookie是原来网页的cookie而不是空
headers是必须自己进行设计的,可以使用网上的模板,也可以使用Fiddler截取的headers,都没有问题
当然有些网站还会检查headers里面Referer来判断是不是从该网站的某一个页面跳转到这个页面的,来屏蔽盗链什么的,so你需要的就是把Referer补充就OK 抓取网页的关键字段
可以使用正则表达式re模块来进行抓取,也可以使用bs4的BeautifulSoup模块来进行抓取都差不多,我就不谈了,看官方中文说明,更加具体仔细几种网页post需要模块的比较
- urllib:笨重而且缓慢,基于高层语言编辑的效率单线程下低下,测试i7配置,post登陆接近28s,我是服了,配置起来也异常复杂,而且本身不支持http一些高级功能,最不推荐使用
- http.client:基于底层,效率比较靠和requests速度差不多,配置也比较麻烦,不过貌似有Session()应该可以简化配置,不过我没试过
requests:用法简单,配置方便,具题看官网
- Word is Cheap,下面上王道。
#requests.pyimport requestsimport reurl="https://passport.csdn.net"s=requests.Session()headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive', 'Accept': '*/*'}s.headers=headersdoc=s.get(url, verify=False).texts1=re.findall(r'name="lt" value="(.*?)"',doc)[0]t=re.findall(r'name="execution" value="(.*?)"',doc)[0]value = { 'username': 'acsunqi', 'password': '************', 'lt':s1, 'execution':t, '_eventId':'submit', } print(value)r=s.post(url,value)print(r.text)mysd=s.get('http://my.csdn.net/my/mycsdn').textprint(mysd) with open(r'C:\Users\sunqi\Desktop\webdata.txt','w') as f: f.write(mysd) print(mysd)data=r.text
成功r.text会返回一个login.js的文档
<script src="/content/loginbox/loginapi.js" ></script><script> function redirect_back(){ var redirect = "http://www.csdn.net/"; var data = {"userId":55698829,"isLocked":false,"mobile":"马赛克=。=","userName":"acsunqi","email":"","password":"此处马赛克马赛克马赛克","registerIP":"182.48.104.153","isDeleted":false,"isActived":true,"role":0,"registerTime":"Aug 3, 2015 1:29:17 AM","userType":0,"lastLoginIP":"119.103.224.105","lastLoginTime":"Feb 6, 2016 2:17:00 AM","loginTimes":29,"user_status":0,"activeTime":"Aug 3, 2015 1:29:17 AM","passwordStrongLevel":2,"ucSyncStatus":true,"nickName":"acsunqi","avatar":"http://avatar.csdn.net/1/D/F/1_acsunqi.jpg"}; var userInfo = "8ClRT6oCiTXgNIcPJ97lMU+KK/SUT2KJjvcbryNkav4QTfDzxjb2kY06MJi3aIaAoo/7YFQ/wBXJCXppS/GrtmdKb8NR770lzdstcC4vWy8="; data.userName = data.userName; data.encryptUserInfo = userInfo; csdn.login_param.call = function (){ location.href = redirect; } var _data = {}; _data.status = true; _data.data = data; var oauth = ""; if(oauth == "true"){ csdn.login_back(_data); }else{ csdn.login_data = data; csdn.login_end(); }; }</script>
随便我又get了一遍自己的个人主页,返回正常,登陆成功
0 0
- pyhon3.4 requests模块模拟post登陆csdn
- 使用requests模拟登陆csdn
- 利用requests 模拟登陆csdn
- 记录使用requests模块实现登陆csdn
- python模拟登陆知乎和CSDN【urllib,re,requests】
- Python requests 模拟登陆
- requests模拟登陆
- python requests模拟登陆github
- 使用requests模拟登陆github
- 使用 python requests 模拟登陆
- requests模拟登陆(session+url_token)
- PHP模拟post登陆
- 模拟post登陆
- 【LeetCode】Python requests模拟Leetcode登陆
- Python模拟登陆(使用requests库)
- 使用Python的Requests包模拟登陆
- requests模块post/get基本用法
- 模拟csdn登陆窗口
- mongodb搭建校内搜索引擎——网页文本的规范化
- 生产环境 JDK6 升级 JDK8
- 8.Masonry的使用方法
- poj 3984迷宫问题(bfs加打印路径)
- ListView适配器和监听器
- pyhon3.4 requests模块模拟post登陆csdn
- hdu 1512 Monkey King
- [BZOJ4300] 绝世好题
- 最新 Sublime Text3 激活码 (Build 3114 有效)
- latex初探
- 《Qt5学习笔记4》QHBoxLayout和QVBoxLayout
- BZOJ 4264: 小C找朋友|Hash
- Java中 ArrayList、Vector和LinkedList
- 文章标题