首页 > 解决方案 > 如何处理 requests.exceptions.InvalidURL:无法在 python 中解析?

问题描述

我是python的新用户。我不知道为什么,但 requests 总是抛出 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 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/

此错误与我提供的网址无关。我该如何处理?

请求的 Python 版本为 3.7.7 和 2.23.0。

此致。

标签: pythonpython-requestspython-3.7

解决方案


由于新版本urllib3(某些用户往往会遇到此问题),您遇到了错误。

该错误不是由于,requests而是问题在于urllib3安装时安装的(新版本)requests 2.21.0+
为避免这种情况,请尝试更新urllib3

python -m pip install --upgrade urllib3

或安装requests v2.21.0

pip uninstall requests # to remove current version
pip install requests==2.21.0
  • 只需将其降级为v2.21.0版本

推荐阅读