用python爬取需要登录的网站
如何抓取需要登录的网站
如果你想要爬取一个网页,但是该网页需要登录才能访问,且登录的时候不需要验证码,那么你可以使用下面的方法创建一个:
当你用浏览器登录网站时,服务器会自动创建一个对象,在其有效期内,对象中的变量会在整个用户会话期间被保存。
因此我们可以先创建一个对象
import requests
session_request=requests.session()
使用抓取请求参数
打开后,在浏览器中输入账号密码登录,并抓取请求参数
(爬取的网页是公司测试环境的,项目还在内测阶段,所以链接被马赛克了,这个不是重点,呵呵)
查看下图登录时请求的接口,很明显登录时请求的接口是post的。
如下图所示,请求中传递了四个参数
,,,
这个密码和我们在浏览器输入的密码不一样,因为是加密的,虽然不知道是怎么加密的,不过没关系,复制过去就行了。
值为空,没关系,只需附加一个空字符串
接下来我们看一下服务器返回给我们什么。
比如有一个,后面访问其他网页的时候会用到这个参数。
模拟浏览器发起登录请求
现在我们知道了浏览器是怎么向服务器发送请求的,以及服务器返回了什么数据,下面我们就可以开始模拟浏览器发起登录请求了!
import requests
session_request=requests.session()
login_url='http://******/Login' #登录时请求的url
result=session_request.post(
login_url,
data={
#构造post请求的数据,按顺序复制粘贴参数就好了
'loginName':'1********8',