requests.get() 和 urrlib.request.urlopen() 在 Python 中的区别

16 浏览
0 Comments

requests.get() 和 urrlib.request.urlopen() 在 Python 中的区别

这个问题已经有了答案:

urllib、urllib2、urllib3与requests模块之间有什么区别?

当我使用以下代码:

import requests
r = requests.get("https://example.com")  

我会得到以下异常:

requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

但是,如果我使用以下代码:

url = "https://www.example.com"
request = urllib.request.urlopen(url)

它会给我正确的响应[200]代码。为什么?这两种方法有什么区别,哪一个应该被优先选择?

admin 更改状态以发布 2023年5月21日
0
0 Comments

这是因为example.com没有有效的证书。因此,请求警告您https连接将不受信任。如果您信任该服务器,那么您应该遵循wolframalpha的建议。

0
0 Comments

使用前者:
我会添加为什么它更好的源。
无论如何,您需要将verify设置为False,以防止请求验证HTTPS请求的SSL证书:

import requests
r = requests.get("https://example.com", verify=False)

编辑:

python中requests.get()和urllib.request.urlopen()的区别

urllib,urllib2和requests模块之间的区别是什么?

0