爬取网站页面时需要登录后才能访问,否则获取不到页面的实际响应数据
有些网站需要我们登陆才能获取访问数据,然而往往登陆页和所要爬取的数据不在同一页面,这里一般都会想到对cookies进行处理的方法,如下所示:
1、先成功登录1次,获取到cookies,处理为字典
2、再改送请求,requests.get(xxx, cookies=cookies)
然而requests模块为我们提供一个更加方便的方法,名为session,可以帮助我们维持客户端和服务端的会话状态而不断开:
# 1、实例化session对象
session = requests.session()
# 2、让session对象发送get或者post请求
post_data = {'username':'','password':''}
res = session.post(url=url, data=post_data, headers=headers) # 登陆
res = session.get(url=url, headers=headers)
原理
浏览器原理: 访问需要登录的页面会带着之前登录过的cookie
程序原理: 同样带着之前登录的cookie去访问 - 由session对象完成
1、实例化session对象
2、登录网站: session对象发送请求,登录对应网站,把cookie保存在session对象中
3、访问页面: session对象请求需要登录才能访问的页面,session能够自动携带之前的这个cookie,进行请求
selenium实现
模拟点击,再用switch_to切换网页
…