本人最近在學習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