当前位置: 首页 > 知识库问答 >
问题:

Python请求库SSL错误:[Errno 2]没有此类文件或目录

上官霄
2023-03-14

第一个问题:我得到以下结果:

文件"D:\Anaconda\Lib\site-包\请求\api.py",第70行,在get返回请求('get', url, params=params,**kwargs)

文件"D:\Anaconda\Lib\site-包\请求\api.py",第56行,在请求返回session.request(method=method, url=url,**kwargs)

文件“D:\Anaconda\Lib\site packages\requests\sessions.py”,第475行,request resp=self。发送(准备,**发送)

文件"D:\Anaconda\Lib\site-包\请求\sessions.py",第596行,在发送r=adapter.send(请求,**kwargs)

文件"D:\Anaconda\Lib\site-包\请求\adapters.py",第497行,在发送提升SSLError(e,请求=请求)

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库本身的问题。

起初,我在这里尝试了验证='false'修复。它没有工作。这里有人说要安装新的openSSL和认证,他们似乎已经安装并在我的系统上更新。发现这个错误有一个伟大的写作在这里。据我所知,没有解决办法。它在github上被确定为一个已知的问题。

根据这个答案,我试图将verify='false'更改为verify='cacert。pem'(我将其包含在项目目录中),它抛出了以下错误:请求。例外情况。SSLError:[SSL:CERTIFICATE\u VERIFY\u FAILED]证书验证失败(\u SSL.c:645)

现在我坐在这里只是想运行这个代码片段——我正试图从一个网站批量下载几百个zip文件——尽管库中存在已知的问题。我对python比较陌生,但对web抓取尤其陌生,所以这对我来说是一个陡峭的学习曲线。任何帮助都将不胜感激。我需要处理报废申请吗?

谢谢

共有1个答案

赏航
2023-03-14
res = requests.get(loginpageURL, verify='false', ...

验证采用布尔值(即True或False)或路径,然后将其用作信任存储的路径。您的规范'false'是一个字符串,而不是布尔值,因此它将尝试使用文件false作为CA存储。找不到此文件,因此,没有此类文件或目录

要解决此问题,必须使用verify=False,即使用布尔值。

除此之外,禁用验证是一个坏主意,只应在测试或TLS提供的安全性与程序完全无关时进行。对于像你这样的登录页面来说,禁用验证可能是一件坏事,因为中间的一个人可以很容易地嗅到用户名和密码。

 类似资料:
  • 问题内容: 我正在对GitHub上的此示例Angular2应用进行较小的修改,以使其使用Express.js而不是KOA。但是目前,当我尝试在FireFox中加载应用程序时,控制台中会显示以下错误: 当http请求触发路由器处理程序并返回时,Angular2应用程序开始加载,该处理程序返回,然后触发一系列嵌套依赖项的回调,其中一个引发错误并中途停止应用程序加载。 为了解决GitHub示例中的代码需

  • 我worte在python多重处理程序。我使用在子进程中共享列表。首先,我在主进程中添加了一些任务。然后,启动一些子进程来完成共享列表中的任务,子进程也将任务添加到共享列表中。但我得到了一个例外如下: 我发现了一些关于如何在python多处理中使用共享列表的内容,如下所示。但也有一些例外。我不知道例外的含义。公共列表和经理列表有什么区别? 代码如下:

  • 我试图熟悉kthread,并编写了一个非常简单的程序来用C语言测试它,指导如下:http://tuxthink.blogspot.com/2011/02/kernel-thread-creation-1.html.我在MacOSX上的威睿运行Ubuntu。 当我试图使用gcc (gcc test5.c -o test5.out)编译这个文件时,我得到“致命错误:linux/kthread.h:没有

  • 我正在尝试使用gcc执行tualth01.c,并且我将gcc和tudelaus01.c与libavcodec和libavformat及其相关文件放在同一文件夹中,它给了我这个错误 致命错误:libavcodec/avcodec. h没有终止此类文件或目录编译 当我通过Ubuntu12.04中的终端运行<code>gcc-o tutorial01 tutorial 01.c-lavformat-la

  • 如果使用此功能删除目录中的所有文件。 但是每当我这样做时,我都会收到这个错误消息: 警告:rmdir(directory/12)[function.rmdir]:delete_文件中没有这样的文件或目录。php “directory/12”是我要删除的目录的正确名称。我不明白为什么它说它不存在,因为它存在!奇怪的是,即使我收到了错误信息,目录还是被删除了。 所以我在for循环之前添加了一行代码,它

  • 问题内容: 我正在尝试将数据加载到我的MySQL数据库的表中,并得到此错误。 参考:此 路径是正确的百分率,我通过按shift键并单击“将路径复制为”将其复制并进行了多次检查。 因此,对此的任何提示将不胜感激 。 其次, 这里有没有办法使用某种相对路径(而不是绝对路径)? 问题答案: 我不知道您使用的是哪个版本的MySQL,但通过Google的快速搜索找到了您对这两个问题的可能答案。以下是《MyS