完整报错是:: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:xxx)>
解决方法
在使用(url)
前,添加代码:
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
问题解析
这是因为访问的网站是https://
,需要SSL认证,而直接用urllib
会导致本地验证失败(具体原因未查明),所以使用ssl._create_unverified_context
关闭认证
报错重现
在执行到request = (url, data)
时报错,取消掉这行向上两行的注释,即可解决问题
import json
import urllib
def 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()