Saltar al contenido

¿Cómo validar una url en Python? (Deformado o no)

Nuestros mejores programadores han agotado sus provisiones de café, buscando diariamente por la respuesta, hasta que Tatiana encontró la solución en GitLab por lo tanto ahora la compartimos aquí.

Solución:

Utilice el paquete de validadores:

>>> import validators
>>> validators.url("http://google.com")
True
>>> validators.url("http://google")
ValidationFailure(func=url, args='value': 'http://google', 'require_tld': True)
>>> if not validators.url("http://google"):
...     print "not valid"
... 
not valid
>>>

Instálelo desde PyPI con pip (pip install validators).

En realidad, creo que esta es la mejor manera.

from django.core.validators import URLValidator
from django.core.exceptions import ValidationError

val = URLValidator(verify_exists=False)
try:
    val('http://www.google.com')
except ValidationError, e:
    print e

si configuras verify_exists a Trueen realidad verificará que la URL existe; de ​​lo contrario, solo verificará si está formada correctamente.

editar: ah, sí, esta pregunta es un duplicado de esto: ¿Cómo puedo verificar si existe una URL con los validadores de Django?

Regex de validación de url de Django (fuente):

import re
regex = re.compile(
        r'^(?:http|ftp)s?://' # http:// or https://
        r'(?:(?:[A-Z0-9](?:[A-Z0-9-]0,61[A-Z0-9])?.)+(?:[A-Z]2,6.?|[A-Z0-9-]2,.?)|' #domain...
        r'localhost|' #localhost...
        r'd1,3.d1,3.d1,3.d1,3)' # ...or ip
        r'(?::d+)?' # optional port
        r'(?:/?|[/?]S+)$', re.IGNORECASE)

print(re.match(regex, "http://www.example.com") is not None) # True
print(re.match(regex, "example.com") is not None)            # False

Comentarios y puntuaciones

Más adelante puedes encontrar las críticas de otros gestores de proyectos, tú además tienes la opción de mostrar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *