¿Cuál es la solución preferida para verificar si una URL es relativa o absoluta?¿Cómo puedo verificar si una URL es absoluta usando Python?
Respuesta
Python 2
Usted puede utilizar el módulo urlparse
para analizar una dirección URL y, a continuación, puede comprobar si es relativa o absoluta por verificando si tiene el nombre de host configurado.
>>> 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
se ha trasladado a urllib.parse
, a fin de utilizar lo siguiente:
from urllib.parse import urlparse
def is_absolute(url):
return bool(urlparse(url).netloc)
Si desea saber si una URL es absoluta o relativa con el fin de unirse a ella con una URL base, que suele hacer de todos modos urlparse.urljoin
:
>>> 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'
>>>
Resulta que esto es lo que quería hacer - se trata el primer URL como valor predeterminado para todas las partes no especificadas de la segunda URL. Si el segundo es absoluto, simplemente usa ese. – rescdsk
No está seguro de lo que estás preguntando. ¿Estás mirando para ver si comienza con http://
? Si es así, una expresión regular sencilla funcionará.
(EDIT: Ver comentario a continuación - un punto muy bueno !!)
NO use una expresión regular solo para verificar que una cadena comience con algún prefijo conocido. Usa el método 'startswith' de una cadena para eso. –
Además, la comprobación de url es un poco más compleja que solo verificar cierto prefijo. – rplnt
no puedo comentar respuesta aceptada, por lo que escribir este comentario como nueva respuesta: esquema de control de la OMI en la respuesta aceptada (bool(urlparse.urlparse(url).scheme)
) no es realmente una buena idea porque http://example.com/file.jpg, https://example.com/file.jpg y //example.com/file.jpg son URL absolutas pero en el último caso obtenemos scheme = ''
utilizo este código:
is_absolute = True if '//' in my_url else False
AFAIK // foo/bar es una URL relativa relativa. Con "relativo" significa "sin esquema y netloc". – guettli
- 1. C# ¿Cómo puedo verificar si existe una URL/es válida?
- 2. ¿Cómo puedo acortar una URL usando Python?
- 3. ¿Cómo puedo verificar si la URL dada de una imagen existe usando GWT?
- 4. python 3: cómo verificar si un objeto es una función?
- 5. ¿Puedo verificar si existe un archivo en una URL?
- 6. determinar si una cadena es URL absoluta o URL relativa en java
- 7. ¿Puedo verificar si existe un archivo en una URL?
- 8. En python, ¿cómo verificar si una fecha es válida?
- 9. Python verificar url va a una página
- 10. ¿Cómo puedo verificar si una matriz es nula/vacía?
- 11. ¿Cómo puedo verificar si una BST es válida?
- 12. Cómo verificar si la URL es válida en Android
- 13. ¿Cómo puedo verificar si una cadena de Python dada es una subcadena de otra?
- 14. jquery cómo verificar si url contiene palabra?
- 15. ¿Cómo saber si una URL es una url de intranet?
- 16. Aplicar URL relativa a una URL absoluta
- 17. ¿Cómo puedo verificar si estoy ejecutando Windows en Python?
- 18. Html.BeginForm() con una URL absoluta?
- 19. ¿Cómo puedo verificar si existe un archivo usando Emacs Lisp?
- 20. Cómo verificar si una cadena en Java es una URL válida
- 21. Cómo puedo normalizar una URL en python
- 22. ¿Cómo puedo verificar si una lista está ordenada?
- 23. ¿Cómo puedo determinar si una URL redirige?
- 24. Verificar si una cadena es JSON en python?
- 25. Url absoluta en jsp
- 26. ¿Cómo puedo verificar si un entero con signo es positivo?
- 27. ¿Cómo comprobar si una ruta es una ruta absoluta o relativa en una plataforma cruzada con Python?
- 28. Compruebe si una ruta es absoluta o relativa
- 29. ¿Puedo verificar C (++) si una matriz es 0 (o falsa)?
- 30. ¿Cómo puedo verificar si existe una URL con los validadores de Django?
¿No debería '' www.example.com/some/path' contar también como absoluto? – Geo
Oficialmente, es una URL relativa con toda la cadena como ruta. Si quieres que cuente como absoluto, deberías agregar el 'http: //' mediante algún preprocesamiento o no usar 'urlparse'. –
Según RFC '// google.com' es una url relativa al protocolo. Y su código devolverá 'False' por ello. – Nik