python requests 模拟点击,在python中requests

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: