【发布时间】:2016-12-27 04:04:42
【问题描述】:
第一个问题: 我得到以下结果:
文件“D:\Anaconda\Lib\site-packages\requests\api.py”,第 70 行,在 get 返回请求('get', url, params=params, **kwargs)
文件“D:\Anaconda\Lib\site-packages\requests\api.py”,第 56 行,在 请求返回 session.request(method=method, url=url, **kwargs)
文件“D:\Anaconda\Lib\site-packages\requests\sessions.py”,第 475 行, 在请求 resp = self.send(prep, **send_kwargs)
文件“D:\Anaconda\Lib\site-packages\requests\sessions.py”,第 596 行, 在发送 r = adapter.send(request, **kwargs)
文件“D:\Anaconda\Lib\site-packages\requests\adapters.py”,第 497 行, 在发送中引发 SSLError(e, request=request)
requests.exceptions.SSLError: [Errno 2] 没有这样的文件或目录
这可以追溯到这里的一行代码:
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' 修复 here。它没有用。有人 here 说要安装新的 openSSL 和证书,它们似乎已在我的系统上安装并且是最新的。 发现该错误在here 上有很好的记录。从我所看到的没有解决方案。 它已在 github 上被识别为已知问题here。
根据this 的回答,当我尝试将 verify='false' 更改为 verify='cacert.pem' (我包含在项目目录中)时,它抛出了这个错误: requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:645)
现在我坐在这里只是想让这个代码 sn-p 运行 - 我正在尝试从网站批量下载数百个 zip 文件 - 尽管该库存在已知问题。我对 python 比较陌生,但对网络抓取尤其陌生,所以这对我来说是一个陡峭的学习曲线。任何帮助,将不胜感激。我需要去scrapping requests吗?
谢谢!
【问题讨论】:
-
其实不确定,但我想我前段时间遇到过这个问题,发现缺少一些 SSL 模块。好问题顺便说一句。
-
你可能是对的,这就是我的知识崩溃的地方。我已经尝试过使用 MechanicalSoup 库,当我尝试使用 get: requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645) 时,它会引发类似的错误。
标签: python ssl python-requests