1

I'm a new user of python. I don't know why but requests always throws an InvalidURL exception:

>>> import requests
>>> r = requests.get('https://www.google.es/')

The output:

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/

This error is independent of the url I give. How do I handle this?

The version of Python is 3.7.7 and 2.23.0 for requests.

Best regards.

Joshua Varghese
  • 5,082
  • 1
  • 13
  • 34

3 Answers3

9

You faced Error due to the New version of urllib3 (some users tends to face this issue).

The error is not due to requests but issue is rather in urllib3 (new ver) that gets installed when installing requests 2.21.0+.
To avoid this either try updating urllib3:

python -m pip install --upgrade urllib3

or install the requests v2.21.0:

pip uninstall requests # to remove current version
pip install requests==2.21.0
  • Just downgrade it to v2.21.0 version
Joshua Varghese
  • 5,082
  • 1
  • 13
  • 34
1

See if you have a hidden character in your URL.

I've wasted tons of time and that was the problem.. this can happen when you copy-paste the URL from somewhere.

enter image description here

Tomer Cohen
  • 222
  • 1
  • 6
0

it's happen sometimes when the URL is not the valid one. I have this error and after hours found that I have a small spaces between each / on the URL... so I suggest to write the URL again on requests.get for no get this mistake..

Adi Ep
  • 509
  • 1
  • 5
  • 22