python requests 模拟点击,在python中requests
Python爱好者尝试参考fuck-login等项目编写爬虫。
首先打开知乎登录页面,输入任意账号密码尝试登录,得到登录表单和请求头。以下工具是chrome开发者工具。
可以看到表单由五项组成,未知的三项分别是,_ xsrf,captcha _ type和captcha。
请求头主要由用户代理、推荐者和主机组成。
所以请求头如下。
headers={ User-Agent : Mozilla/5.0(Macintosh;英特尔Mac OS X 10 _ 12 _ 6)apple WebKit/537.36(KHTML,像壁虎)Chrome/60 . 0 . 3112 . 113 Safari/537.36
, Referer:https://www.zhihu.com/,
主持人: www.zhihu.com
表单中的三项首先被求解_xsrf。尝试在页面中搜索xsrf并获得以下结果。
大家可以看到,_xsrf在网页的源代码中,值和表单项中的值是一样的,所以这里我们用正则表达式或者BeautifulSoup来推进。
请注意,应该使用requests库中的session方法来完成以下任务,因为Zhihu将检查cookie。应该做
确保的以下操作和将来的爬网内容都在一个会话中。
session=requests.session()
URL _ xsrf=session . get( https://www . zhi Hu . com ,headers=headers)
html _ xsrf=beautiful soup(URL _ xsrf . content, lxml )
xsrf=html_xsrf.find(输入)
由于知乎验证码是一个倒置的汉字,所以从图1可以看出,表单项中的captcha项是倒置字的坐标。这里不知道怎么弄。我观察到captcha_type字段的值是cn,于是我尝试将值改为en,并要求查看结果。
选择左边的captch.gif选项,将cn改为en,尝试获取验证码。
试试,获取原知乎验证码,字母和数字的组合。
这里,STR (int (time。time ()) * 1000在captcha_url中,r=150在观察后的请求url中.这串数字和timestamp很像,经验证确实如此。
captcha _ URL= https://www . zhi Hu . com/captcha . gif?r= str(int(time . time()* 1000)) type=log in lang=en
req _ captcha=session . get(captcha _ URL,headers=headers)
用open(captcha.gif , wb )作为f:
f . write(req _验证码.内容)
验证码图片保存到本地后,手工输入到程序中。至此,请求头已经构建完毕。
Data={phone_num :手机号码,
密码:密码,
验证码类型: en ,
验证码:手动输入,
_xsrf:xsrf
}
开始登录。
req=session . post( https://www . zhi Hu . com/log in/phone _ num ,headers=headers,data=data)
print(req.json()[msg])
登录成功,验证登录是否成功,获取首页内容,检查是否与网页显示一致。
进口re
req _ sigh in=session . get( https://www . zhi Hu . com ,headers=headers)
html _ sighin=beautiful soup(req _ sighin . content, lxml )
html_sighin.find(a ,{ href :re . compile(//zhuan LAN . zhi Hu . com/p/[0-9]*)})
可以看到,知乎首页的内容已经成功获取,到目前为止,模拟登陆成功,可以进行进一步的抓取。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。