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

Difference between requests.get() and urrlib.request.urlopen() python

本问题已经有最佳答案,请猛点这里访问。

当我使用时:

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

我得到以下例外:

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

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

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

它给出了正确的响应[200]代码。为什么会这样?这两种方法的区别是什么?应首选哪种方法?


使用前一个:我要补充一下为什么会更好。无论如何,您需要将verify设置为False,以防止请求验证HTTPS请求的SSL证书:

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

编辑:

Difference between requests.get() and urllib.request.urlopen() python

URLLIB、URLLIB2和请求模块之间有什么区别?


发生这种情况是因为example.com没有有效的证书。因此请求会警告您,HTTPS连接将不受信任。如果您信任服务器,那么您应该按照Wolframalpha的建议进行操作。