完整报错是:urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:xxx)>
解决方法
在使用urllib.request.Request(url)
前,添加代码:
import sslssl._create_default_https_context = ssl._create_unverified_context
问题解析
这是因为访问的网站是https://
,需要SSL认证,而直接用urllib
会导致本地验证失败(具体原因未查明),所以使用ssl._create_unverified_context
关闭认证
报错重现
在执行到request = urllib.request.Request(url, data)
时报错,取消掉这行向上两行的注释,即可解决问题
import jsonimport urllibdef baidu_search():url = "/s?"data = {"wd": "啊哈"}data = json.dumps(data).encode('GBK')# import ssl# ssl._create_default_https_context = ssl._create_unverified_context # 如果不添加这两行,下一行报错request = urllib.request.Request(url, data)response = urllib.request.urlopen(request)content = response.read()print(str(content))if __name__ == '__main__':baidu_search()