1. 程式人生 > >豆瓣 URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:719)>

豆瓣 URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:719)>

import urllib.request as urlrequest 
#import ssl
#ssl._create_default_https_context = ssl._create_unverified_context
url_visit='https://api.douban.com/v2/movie/subject/1764796'
crawl_content=urlrequest.urlopen(url_visit).read()

print(crawl_content.decode('unicode-escape'))

 

 

 

 

而當目標網站使用的是自簽名的證書時就會丟擲一個 urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)> 的錯誤訊息,

解決方案包括下列兩種方式:

1. 使用ssl建立未經驗證的上下文,在urlopen中傳入上下文引數

  1.   import ssl
  2.   import urllib2
  3.    
  4.   context = ssl._create_unverified_context()
  5.   print urllib2.urlopen("https://www.12306.cn/mormhweb/", context=context).read()

2. 全域性取消證書驗證

  1.   import ssl
  2.   import urllib2
  3.    
  4.   ssl._create_default_https_context = ssl._create_unverified_context
  5.    
  6.   print urllib2.urlopen("https://www.12306.cn/mormhweb/").read()

注意:在全全域性請求檔案匯入import ssl

  1.   import ssl
  2.   ssl._create_default_https_context = ssl._create_unverified_context

至此,問題圓滿解決!