python https協議和InsecurePlatformWarning問題

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

1、針對https協議的網站須要驗證證書python

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

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

2、InsecurePlatformWarning 問題網站

  在通過第一步添加了參數以後,能夠請求到了網站的信息了,可是會出現兩個warning級別的錯誤:google

複製代碼
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-warningsurl

  雖然這個warning提示不會影響程序的運行,可是對於有強迫症的人來講仍是很不舒服的(本人有嚴重的強迫症),因此有沒有什麼辦法不顯示(去掉這些warning級別的錯誤呢?)??spa

  解決方法:能夠經過 disable_warnings 方法關閉 warning,只須要在代碼中添加這一句便可,requests.packages.urllib3.disable_warnings()code

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

複製代碼
#!/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
複製代碼

  

簡單、堅決
相關文章
相關標籤/搜索