在Pycharm IDE中,Python Http请求无法工作

问题描述 投票:0回答:1

我在这里有点疯狂,觉得自己一定是漏掉了什么明显的东西。

我试图使用python和urllib3从一个网站上抓取数据。我的代码是这样的

>>> import urllib3
>>> from bs4 import BeautifulSoup
>>>
>>> http = urllib3.PoolManager()
>>> url = 'https://www.google.com/'
>>> r = http.request('GET', url)
>>> data = BeautifulSoup(r.data)

如果我打开我的终端(我在mac上),激活我的conda虚拟环境,然后调出python解释器,这段代码就会像预期的那样工作,调出html请求并解析数据。

当我把这段代码放到Python IDE中,并将其设置为完全相同的虚拟环境时,HTTP get请求失败,并收到以下错误信息

{MaxRetryError}HTTPSConnectionPool(host='www.nts.live', port=443): Max retries exceeded with url: /api/v2/shows/powell/episodes?offset=0&limit=12 (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')],)",),)) 

我过去也做过类似的请求,在Pycharm内也能正常工作,所以这肯定是某个阶段的用户错误。我不知道除了我的虚拟环境是相同的以外,我应该检查什么?我已经尝试了多个不同的链接,但问题依然存在。如果有任何关于为什么会出现这个错误的想法,我将非常感激。

python http ssl pycharm urllib
1个回答
0
投票

这个错误不是来自IDE,而是在一个模块中使用了其他方法检索http请求的代码。以上住在我的 data_pull.py 文件,但我有另一个文件 spotify_request.py 也被导入。而不是 urllib3,这个文件使用了 import requests 然后 requests.get(url).

当我在终端中独立运行我的代码时,这第二个导入从来没有被执行过,代码运行得很流畅。为了解决这个问题,我将所有的urllib3获取请求替换为requests库(https:/pypi.orgprojectrequests。). 我还测试了一下,让所有的请求都使用 urllib3,代码也运行得很好。我不知道为什么这两种方法都不能用,但这解决了我的错误。

TLDR; 我无法在我的包中同时使用 urllib3 和 requests 进行 http 调用,请坚持使用其中一种。

© www.soinside.com 2019 - 2024. All rights reserved.