Comment gérer les requêtes.exceptions.InvalidURL : échec de l'analyse en python ?


Dikus Extraterrestre

Je suis un nouvel utilisateur de python. Je ne sais pas pourquoi mais les requêtes lèvent toujours une exception InvalidURL :

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

Le résultat:

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/

Cette erreur est indépendante de l'url que je donne. Comment puis-je gérer cela?

La version de Python est 3.7.7 et 2.23.0 pour les requêtes.

Meilleures salutations.

Josué

Vous avez rencontré une erreur en raison de la nouvelle version de urllib3(certains utilisateurs ont tendance à rencontrer ce problème).

L'erreur n'est pas due à requestsmais le problème est plutôt dans urllib3(nouvelle version) qui est installé lors de l'installation de requests 2.21.0+.
Pour éviter cela, essayez de mettre à joururllib3 :

python -m pip install --upgrade urllib3

ou installez le requests v2.21.0:

pip uninstall requests # to remove current version
pip install requests==2.21.0
  • Il suffit de le rétrograder à la v2.21.0version

Articles connexes


Comment gérer les exceptions en python?

el323 elem = browser.find_element_by_xpath(".//label[@class = 'checkbox' and contains(.,'Últimos 15 días')]/input") if ( elem.is_selected() ): print "already selected" else: elem.click() Dans mon code, elem.click()obtient donne parfois une erreur. Si