python爬虫学习17
-
高级用法其二
-
Session 维持
# 之前我们学过 post 与 get方法做到模拟网页进行请求,这两种方法是相互独立的,即相当于两个浏览器打开了不同的页面 # 基于以上特点,我们使用爬虫时,用 POST 方法登录网站之后,再想要使用get方法获取请求个人信息页面显然不能得到我们想要的信息,那么如何解决这种问题呢? # 方法一 在两次请求中传入相同的cookie参数 # 方法二 利用Session对象,进行session维护
实例:
import requests r0 = requests.get('https://www.httpbin.org/cookies/set/number/123456789') # 在我们设置cookie并成功获得请求后,再次向该网站请求 print(r0.text) r1 = requests.get('https://www.httpbin.org/cookies') # 可以发现返回的cookies字段为空 print(r1.text)
运行结果:
使用Session对象:
# session 维持 import requests s = requests.session() r0 = s.get('https://www.httpbin.org/cookies/set/number/123456789') r1 = s.get('https://www.httpbin.org/cookies') print(r0.text) print(r1.text)
运行结果:
-
SSL证书验证
# 现在很多网站要求使用HTTPS协议,但是有些网站可能没有设置好HTTPS证书,或者网站的HTTPS 证书可能不被CA机构认可,这是这些网站可能会出现SSL证书错误的提示。 # 例如我们访问这个网站 https://ssr2.scrape.center/ # 就会有如下提示
下面我们来使用requests库请求这类网站:
import requests resp = requests.get('https://ssr2.scrape.center/') print(resp.status_code) # 嗯?怎么回事?怎么不让我们访问
运行结果:没有结果…给我们抛出了一个SSLError错误
设置 verify 参数以绕过验证
import requests # verify 参数设置为 True(默认值) 时会自动验证,反之则不会进行验证 resp = requests.get('https://ssr2.scrape.center/',verify=False) print(resp.status_code)
这样,状态码就能够获取到了:
但是我们发现程序还是给出了一个警告,希望我们指定证书
设置忽略警告以屏蔽警告
import requests from requests.packages import urllib3 urllib3.disable_warnings() resp = requests.get('https://ssr2.scrape.center/', verify=False) print(resp.status_code)
运行结果:
指定证书以绕过警告
设置证书需要在本地有crt和key文件,并且制定他们的路径,且本地私有的证书的key必须是解密状态。
别看我了,像我就可以跳过这一步了,我没有
# 格式 import requests resp = requests.get('https://ssr2.scrape.center/', cert=('path/**.crt', 'path/**.key'))
-
今日结束,未完待续…