python https協議和InsecurePlatformWarning問題


  本人最近在學習python,今天想使用python來抓取糗事百科網站上的一些笑話故事的,由於糗事百科的網站url采取的是https協議,所以當我按照常規的方式抓取的時候,發現不行,報錯了,找了很多方法都不好使,這對於一個初學者來說真是很捉雞的一件事情,最后google了好久,終於找到了解決的辦法,接下來一起看一下

一、針對https協議的網站需要驗證證書

  錯誤信息:'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)' ,這句話的意思就是證書驗證失敗了

  解決方法:在requests的請求方法中添加參數 verify=False ;例如:requests.get('https://www.qiushibaike.com/hot/page/1/',verify=False),

二、InsecurePlatformWarning 問題

  在經過第一步添加了參數之后,可以請求到了網站的信息了,但是會出現兩個warning級別的錯誤:

G:\Python27\lib\site-packages\urllib3\connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)
G:\Python27\lib\site-packages\urllib3\connectionpool.py:858: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
  InsecureRequestWarning)

  上邊的警告提示大義是:未經驗證的HTTPS請求正在進行。 強烈建議添加證書驗證。 請參閱:https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings

  雖然這個warning提示不會影響程序的運行,但是對於有強迫症的人來說還是很不舒服的(本人有嚴重的強迫症),所以有沒有什么辦法不顯示(去掉這些warning級別的錯誤呢?)??

  解決方法:可以通過 disable_warnings 方法關閉 warning,只需要在代碼中添加這一句即可,requests.packages.urllib3.disable_warnings()

  下邊是簡單的獲取糗事百科第一頁的數據的代碼:

#!/usr/bin/env python
#coding=utf-8

import requests

page = 1
url = 'https://www.qiushibaike.com/hot/page/' + str(page)
try:
    # 避免warning級別的警告(不顯示)
    requests.packages.urllib3.disable_warnings()

    # 使用requests庫請求的
    response = requests.get(url,  verify=False)
    print response.text
except urllib2.URLError, e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        print e.reason

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM