python爬虫--模拟登录知乎,python爬虫--,1、处理登录表单处理
python爬虫--模拟登录知乎,python爬虫--,1、处理登录表单处理
1、处理登录表单
处理登录表单可以分为2步:
第一、查看网站登录的表单,构建POST请求的参数字典;
第二、提交POST请求。
打开知乎登录界面,https://www.zhihu.com/#signin,
按f12,打开开发者界面:
在这里面找到headers信息,
现在在用户名和密码处查找信息,
发现用户名的属性为account,account中的内容为我们的用户名;
同理,password中的内容为我们的密码。
在登录表单中,有些key值在浏览器中设置了hidden值,不会显示出来,这个时候我们需要去审查元素中去查找,
发现了,cookie中有一个_xsrf的属性,类似于token的作用。而这个东西的存在,就让我们在模拟登录的时候,必须将这个属性作为参数一起加在请求中发送出去。
而获取_xsrf则可以用之前的BeautifulSoup获取
import requestsfrom bs4 import BeautifulSoup as bssession = requests.session()post_url = ‘https://www.zhihu.com/#signin‘agent = ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.1.2.3000 Chrome/55.0.2883.75 Safari/537.36‘headers = { "Host": "www.zhihu.com", "Referer":"http://www.zhihu.com/", ‘User-Agent‘:agent}postdata = { ‘password‘: ‘*****‘, ‘account‘: ‘******‘,}response = bs(requests.get(‘http://www.zhihu.com/#signin‘,headers=headers).content, ‘html.parser‘)xsrf = response.find(‘input‘,attrs={‘name‘:‘_xsrf‘})[‘value‘]postdata[‘_xsrf‘] =xsrfresponed = session.post(‘http://www.zhihu.com/login/email‘,headers=headers,data=postdata)print(responed)
结果显示:
<Response [200]>;
代码做一些修改:
import requests
from bs4 import BeautifulSoup
session = requests.session()
agent = ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/5.1.2.3000 Chrome/55.0.2883.75 Safari/537.36‘
headers = {
"Host": "www.zhihu.com",
"Origin":"https://www.zhihu.com/",
"Referer":"http://www.zhihu.com/",
‘User-Agent‘:agent
}
postdata = {
‘password‘: ‘*****‘,
‘account‘: ‘******‘,
}
response = session.get("https://www.zhihu.com", headers=headers)
soup = BeautifulSoup(response.content, "html.parser")
xsrf = soup.find(‘input‘, attrs={"name": "_xsrf"}).get("value")
postdata[‘_xsrf‘] =xsrf
login_page = session.post(‘http://www.zhihu.com/login/email‘, data=postdata, headers=headers)
print(login_page.status_code)
运行结果:200
代表响应的状态为请求成功,可以成功登录表单。
python爬虫--模拟登录知乎
相关内容
- python 之开发工具 sublimetext 3,pythonsublimetext,一、前言
- python 调用 R,使用rpy2,pythonrpy2, python 与
- python2 与python3中最大的区别(编码问题bytes&str,
- Python 二级模拟操作题(三),python模拟,1.根据输入字符
- Python人工智能之路 - 第三篇 : PyAudio 实现录音 自动化交
- Python图片识别——人工智能篇,,一、安装pytess
- Python的X[y==1, 0],python,最近研究逻辑回归,I
- Vs2017 Python开发-添加虚拟环境,vs2017python,虚拟环境是代
- 利用Python爬去囧网福利(多线程、urllib、request),python
- 关于基于python27使用 from pylab import * 报错问题,python2
评论关闭