以知乎为例试探讨一种万能模拟登陆方式
来源:互联网 发布:nginx wiki 编辑:程序博客网 时间:2024/05/22 15:21
以我们的日常上网的经验,有时我们好像不必登陆也能进入个人页面,原因大家都知道–cookies,根据这个思路,我们只要获取登陆之后的cookies我们就可以随意访问网站,但是要获取登陆后的cookies必须要先登陆,而现在的网站登陆时都有各种各样的验证码,一个网站一个验证原理(比如知乎的点击倒立文字就很特别),这就给我们登陆时带来了不少麻烦,解决了这个还有那个,遇到一个新的验证方式还需要重新研究,我今天要分享的就是一个笨拙但是却像“万金油 式的方法”–手工+selenium+requests。
1.总体思路
大家都知道selenium非常容易模拟登陆,但是却不擅长爬取信息,太慢了,所以我们就发挥它的长处,只用在登陆上,然后把登陆后的cookies传递给requests,然后利用requests去进行下面的爬取工作,各施所长。
2 .具体代码
python#_*_coding:utf8_*_from selenium import webdriverimport requestsimport time#利用selenium登录,获取cookiesbr=webdriver.Chrome()br.get("https://www.zhihu.com/#signin")br.find_element_by_xpath("//span[contains(text(),'使用密码登录')]").click()br.find_element_by_xpath("//input[@name='account']").send_keys("*********")br.find_element_by_xpath("//input[@name='password']").send_keys("**********")time.sleep(5)#手工点击验证码倒立文字预留时间br.find_element_by_xpath("//button[contains(text(),'登录')]").click()time.sleep(3)#网页加载时间selenium_cookies=br.get_cookies()#把selenium获取的cookies保存到变量,备用。# print(selenium_cookies)br.quit()#接下来由requests接收selenium的cookies,并访问网站s=requests.Session()for i in selenium_cookies: requests.utils.add_dict_to_cookiejar(s.cookies, {i['name']:i['value']})headers={ 'Host':'www.zhihu.com', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/55.0', 'Accept':'text/html,application/xhtml+xm…plication/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', 'Connection':'keep-alive', 'Upgrade-Insecure-Requests':'1', 'Pragma':'', 'Cache-Control':'',}r=s.get("https://www.zhihu.com",headers=headers).content.decode('utf-8')print(r)#访问个人中心验证
在此次试验中我遇到最大的坑就是selenium的cookies转换成requests的cookiejar对象了,查了好多资料,最终在官方文档里找到了答案,关于requests的cookie处理及cookiejar对象我会再总结一篇,以上。2017-10-2。
阅读全文
1 0
- 以知乎为例试探讨一种万能模拟登陆方式
- Python模拟登陆万能法-微博|知乎
- Python模拟登陆万能法-微博|知乎
- 模拟登陆知乎
- 【scrapy】模拟登陆知乎
- python---模拟登陆知乎
- python 模拟知乎登陆
- selenium模拟登陆知乎
- Python网络爬虫之模拟登录(以知乎为例)
- Python网络爬虫之模拟登录(以知乎为例)
- Python使用requests库模拟登陆网站的方式--以豆瓣为例
- Python使用requests库模拟登陆网站的方式--以豆瓣为例
- 使用python完成知乎模拟登陆
- Python爬虫模拟登陆知乎
- python模拟登陆知乎,得到cookie
- Python 爬虫模拟登陆知乎
- Python爬虫之模拟登陆知乎
- 第4节---模拟登陆知乎
- RMQ与用RMQ做LCA
- CentOS下载安装Nginx, 详情配置Nginx和对Nginx进行性能优化
- 生成树协议STP和快速生成树协议RSTP的配置及原理
- 【猫猫的Unity Shader之旅】之高斯模糊
- 1073. 多选题常见计分法(20)
- 以知乎为例试探讨一种万能模拟登陆方式
- (二)操作系统设计技术知识重点笔记
- Ubuntu下vsftp的配置
- 开发常用插件分享
- leetcode 349. Intersection of Two Arrays 数组的交集
- kk《必然》后感之'形成'
- java.lang.IllegalArgumentException: Update/delete queries cannot be typed
- HOJ 2739 The Chinese Postman Problem 带权有向图上的中国邮路问题
- linux/unix多线程/多进程编程总结(一)