Quelle est la solution préférée pour vérifier si une URL est relative ou absolue?
4 réponses
Python 2
Vous pouvez utiliser le module urlparse
pour analyser une URL, puis vous pouvez vérifier s'il est relatif ou absolu en vérifiant s'il a le nom d'hôte défini.
>>> import urlparse
>>> def is_absolute(url):
... return bool(urlparse.urlparse(url).netloc)
...
>>> is_absolute('http://www.example.com/some/path')
True
>>> is_absolute('//www.example.com/some/path')
True
>>> is_absolute('/some/path')
False
Python 3
urlparse
a été déplacé vers urllib.parse
, utilisez donc ce qui suit:
from urllib.parse import urlparse
def is_absolute(url):
return bool(urlparse(url).netloc)
Si vous voulez savoir si une URL est absolue ou relative pour la joindre à une URL de base, je fais généralement urlparse.urljoin
quand même:
>>> from urlparse import urljoin
>>> urljoin('http://example.com/', 'http://example.com/picture.png')
'http://example.com/picture.png'
>>> urljoin('http://example1.com/', '/picture.png')
'http://example1.com/picture.png'
>>>
Impossible de commenter la réponse acceptée, alors écrivez ce commentaire comme nouvelle réponse: le schéma de vérification de l'OMI dans la réponse acceptée (bool(urlparse.urlparse(url).scheme)
) n'est pas vraiment une bonne idée en raison de http://example.com/file.jpg, https: / /example.com/file.jpg et //example.com/file.jpg sont des URL absolues mais dans le dernier cas, nous obtenons le schéma = ''
J'utilise ce code:
is_absolute = True if '//' in my_url else False
Je ne sais pas de quoi vous parlez. Cherchez-vous simplement à voir si cela commence par http://
? SI c'est le cas, une simple expression régulière fera l'affaire.
(EDIT: voir le commentaire ci-dessous - un très bon point !!)
Questions connexes
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.