J'ai essayé de déterminer le meilleur moyen de valider une URL (en particulier en Python), mais je n'ai pas vraiment trouvé de réponse. Il semble qu’il n’existe pas de moyen connu de valider une URL, et cela dépend des URL que vous pensez devoir valider. De plus, j'ai trouvé difficile de trouver un standard facile à lire pour la structure des URL. J'ai trouvé les RFC 3986 et 3987, mais ils contiennent beaucoup plus que leur structure.
Est-ce que quelque chose me manque ou n'y a-t-il pas un moyen standard de valider une URL?
Cela ressemble à une copie de Comment valider une URL avec une expression régulière en Python?
Vous devriez pouvoir utiliser la bibliothèque urlparse
décrite ici.
>>> from urllib.parse import urlparse # python2: from urlparse import urlparse
>>> urlparse('actually not a url')
ParseResult(scheme='', netloc='', path='actually not a url', params='', query='', fragment='')
>>> urlparse('http://google.com')
ParseResult(scheme='http', netloc='google.com', path='', params='', query='', fragment='')
appelez urlparse
sur la chaîne que vous souhaitez vérifier, puis assurez-vous que la ParseResult
a des attributs pour scheme
et netloc
La question initiale est un peu ancienne, mais vous voudrez peut-être aussi consulter la bibliothèque Validator-Collection que j'ai publiée il y a quelques mois. Il comprend une validation très performante des URL basée sur regex pour la conformité au standard RFC. Quelques détails:
re
de Python 2.x)C'est aussi très facile à utiliser:
from validator_collection import validators, checkers
checkers.is_url('http://www.stackoverflow.com')
# Returns True
checkers.is_url('not a valid url')
# Returns False
value = validators.url('http://www.stackoverflow.com')
# value set to 'http://www.stackoverflow.com'
value = validators.url('not a valid url')
# raises a validator_collection.errors.InvalidURLError (which is a ValueError)
En outre, Validator-Collection inclut environ 60 autres validateurs, y compris les domaines et les adresses électroniques, afin que les utilisateurs puissent trouver quelque chose d’utile.
vous pouvez également essayer d'utiliser urllib.request
pour valider en passant l'URL dans la fonction urlopen
et en capturant l'exception pour URLError
.
from urllib.request import urlopen, URLError
def validate_web_url(url="http://google"):
try:
urlopen(url)
return True
except URLError:
return False
Ce serait return False
dans ce cas
Je voudrais utiliser le package de validateurs. Voici le lien link vers la documentation et les instructions d’installation.
C'est aussi simple que
import validators
url = 'YOUR URL'
validators.url(url)
Il retournera vrai si c'est le cas et faux sinon.