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

时间:2016-06-30 05:18:24

标签: python

当我使用时:

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]代码。为什么会这样?这两种方法有什么区别,应该首选哪一种?

2 个答案:

答案 0 :(得分:1)

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

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

编辑:

  

requests.get()和urllib.request.urlopen()python

之间的区别

What are the differences between the urllib, urllib2, and requests module?

答案 1 :(得分:0)

这种情况正在发生,因为example.com没有有效的证书。因此请求警告您https连接将不受信任。如果你信任服务器那么你应该做wolframalpha建议的那样。