如果使用urllib.request.urlopen()爬取https鏈接會報如下錯誤
urllib.error.URLError:<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:833)>
原因:
當(dāng)你爬取一個 https 的時候會驗證一次 SSL 證書?
當(dāng)目標(biāo)使用的是自簽名的證書時就會報出一個如上錯誤
解決辦法一:使用ssl創(chuàng)建未經(jīng)驗證的上下文固以,在urlopen中傳入上下文參數(shù)
import ssl
context = ssl._create_unverified_context()
data= urllib.request.urlopen(url_string,context=context).read()
解決方法二:全局取消證書驗證,方法中不用加入context參數(shù)
ssl._create_default_https_context = ssl._create_unverified_context
即可正常進行爬取