(1) 如何使用Cookie
使用Cookie来登录网页,不仅可以绕过登录步骤,还可以绕过网站的验证码
如下,使用了requests的Session模块。所谓Session,是指一段会话。网站会把每一个会话的ID(Session ID)保存在浏览器的Cookies中用来标识用户的身份。
session= requests.Session()
source= session.get('https://zhihu.com',headers = headers,verify = False).content.decode()
(2) 为何使用session
其实在调用requests.get(),底层还是会先创建一个Session,然后用Session去访问。但是每调用一次requests.get(),都会创建一个新的Session。对服务器来说,就像是每次都新开一个浏览器来访问。这个行为其实和正常人的行为是不一致的。如果直接使用Session模块,那么每次都用这个Session去访问,对服务器来说,这个行为就像是在一个浏览器窗口中通过单击链接进入其他页面。这个行为更像人的行为。在requests的官方文档中也建议,如果多次对同一个网站发送请求,那么应该使用Session模块,它会带来显著的性能提升。
(3) 使用session存在的问题
对于HTTPS的网站,在requests发送请求的时候需要带上verify=False这个参数,否则爬虫会报错。
带上这个参数以后,爬虫依然会报一个警告,这是因为没有HTTPS的证书。不过这个警告不会影响爬虫的运行结果。对于有强迫症的读者,可以参考相关内容为requests设置证书,从而解除这个警告。