如何处理requests.exceptions.InvalidURL:在python中解析失败?
我是python的新用户。我不知道为什么,但请求总是引发InvalidURL异常:如何处理requests.exceptions.InvalidURL:在python中解析失败?,python,python-requests,python-3.7,Python,Python Requests,Python 3.7,我是python的新用户。我不知道为什么,但请求总是引发InvalidURL异常: >>> import requests >>> r = requests.get('https://www.google.es/') 输出: Traceback (most recent call last): File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 380, in pr
>>> import requests
>>> r = requests.get('https://www.google.es/')
输出:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 380, in prepare_url
scheme, auth, host, port, path, query, fragment = parse_url(url)
File "/usr/lib/python3/dist-packages/urllib3/util/url.py", line 392, in parse_url
return six.raise_from(LocationParseError(source_url), None)
File "<string>", line 3, in raise_from
urllib3.exceptions.LocationParseError: Failed to parse: https://www.google.es/
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.7/dist-packages/requests/api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 516, in request
prep = self.prepare_request(req)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 459, in prepare_request
hooks=merge_hooks(request.hooks, self.hooks),
File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 314, in prepare
self.prepare_url(url, params)
File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 382, in prepare_url
raise InvalidURL(*e.args)
requests.exceptions.InvalidURL: Failed to parse: https://www.google.es/
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.7/dist packages/requests/models.py”,第380行,在prepare\u url中
方案、身份验证、主机、端口、路径、查询、片段=解析url(url)
文件“/usr/lib/python3/dist packages/urllib3/util/url.py”,第392行,位于parse_url中
返回6.raise\u from(LocationParseError(source\u url),无)
文件“”,第3行,从
urllib3.exceptions.LocationParseError:未能分析:https://www.google.es/
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/local/lib/python3.7/dist-packages/requests/api.py”,第76行,在get中
返回请求('get',url,params=params,**kwargs)
文件“/usr/local/lib/python3.7/dist-packages/requests/api.py”,请求中的第61行
return session.request(method=method,url=url,**kwargs)
文件“/usr/local/lib/python3.7/dist-packages/requests/sessions.py”,请求中的第516行
准备=自我准备请求(req)
文件“/usr/local/lib/python3.7/dist packages/requests/sessions.py”,第459行,在prepare\u请求中
钩子=合并钩子(request.hooks,self.hooks),
文件“/usr/local/lib/python3.7/dist packages/requests/models.py”,第314行,在prepare中
self.prepare_url(url,参数)
文件“/usr/local/lib/python3.7/dist packages/requests/models.py”,第382行,在prepare\u url中
提出无效URL(*e.args)
requests.exceptions.InvalidURL:未能分析:https://www.google.es/
此错误与我给出的url无关。我该怎么处理
Python的请求版本为3.7.7和2.23.0
致以最诚挚的问候。由于新版本的
urllib3
,您遇到了错误(一些用户倾向于面对这个问题)
错误不是由于请求引起的,而是在安装请求2.21.0+
时安装的urllib3
(新版本)中出现的问题
要避免这种情况,请尝试更新urllib3
:
python -m pip install --upgrade urllib3
或者安装请求v2.21.0
:
pip uninstall requests # to remove current version
pip install requests==2.21.0
- 只需将其降级到
v2.21.0
version
查看URL中是否有隐藏字符
我浪费了很多时间,这就是问题所在。。
当您从某处复制粘贴URL时,可能会发生这种情况
当URL无效时,有时会发生这种情况。我有这个错误,几个小时后发现我在URL上的每个/之间有一个小空格。。。
因此,我建议在requests.get上重新编写URL。不要犯这个错误。尝试r=requests.request('get','https://www.google.es/“)
@InfinityTM,我尝试使用“GET”作为第一个参数,但异常为:requests.exceptions.InvalidURL:未能为我解析:GETWorks。请贴一张合适的照片。注意:您可能需要确保此时您的代码请求
确实符合您的期望(只需在通话前添加打印(请求)
,并检查您的have)。这是urllib3try安装requests v2.21.0的问题,谢谢@tomer cohen,但我在前面的评论中注意到urllib3版本有问题。当然,只是添加了这个,因为这是我的问题,我没有找到任何解决方案