Python requests Library SSL error: [Errno 2] No such file or directory
第一个问题:
我得到以下结果:
File"D:\Anaconda\Lib\site-packages
equests\api.py", line 70, in get
return request('get', url, params=params, **kwargs)File"D:\Anaconda\Lib\site-packages
equests\api.py", line 56, in
request return session.request(method=method, url=url, **kwargs)File"D:\Anaconda\Lib\site-packages
equests\sessions.py", line 475,
in request resp = self.send(prep, **send_kwargs)File"D:\Anaconda\Lib\site-packages
equests\sessions.py", line 596,
in send r = adapter.send(request, **kwargs)File"D:\Anaconda\Lib\site-packages
equests\adapters.py", line 497,
in send raise SSLError(e, request=request)requests.exceptions.SSLError: [Errno 2] No such file or directory
这里追溯到一行代码:
1 2 3 4 5 6 7 8 9 10 11 12 | import requests, os, bs4, calendar #, sys import urllib.request while not year>2016: print('Downloading page {}...'.format(url)) res = requests.get(loginpageURL, verify='false', auth=('username', 'password')) #this is the line that doesn't work res = requests.get(url, verify='false') #but I have tried it without that line and this line also doesn't work res.raise_for_status() soup = bs4.BeautifulSoup(res.text) print(soup) |
我已经广泛研究了这个问题,并得出结论,它实际上是requests / urllib3库本身的一个问题。
起初,我在这里尝试了verify ='false'修复程序。它没用。这里有人说要安装新的openSSL和certifi,它们似乎已安装在我的系统上并且是最新的。
发现这个bug在这里有很好的写作。我看不到任何解决方案。
它已在github上被识别为已知问题。
根据这个答案,当我试图将verify ='false'更改为verify ='cacert.pem'(我包含在项目目录中)时,它抛出了这个错误:
requests.exceptions.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:645)
现在我坐在这里只是想让这一个代码片段运行 - 我试图从网站批量下载几百个zip文件 - 尽管库已知问题。我对python比较陌生,但对于网络抓取来说尤其陌生,所以这对我来说是一个陡峭的学习曲线。任何帮助,将不胜感激。我是否需要废除请求?
谢谢!
1 res = requests.get(loginpageURL, verify='false', ...
验证采用布尔值(即True或False)或路径,然后将其用作信任库的路径。 您的规范
要解决此问题,您必须使用
除了禁用验证是一个坏主意,只应该进行测试或TLS提供的安全性与程序完全无关。 对于像您的情况一样的登录页面,禁用验证可能是一件坏事,因为中间的人可以轻易地嗅探用户名和密码。