python爬虫学习17

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'))
      

今日结束,未完待续…

猜你喜欢

转载自blog.csdn.net/szshiquan/article/details/123560383