Estoy buscando una función de biblioteca para normalizar una URL en Python, es decir, eliminar partes "./" o "../" de la ruta, o agregar un puerto predeterminado o escapar de caracteres especiales, etc. El resultado debe ser una cadena que sea única para dos URL que apuntan a la misma página web. Por ejemplo, http://google.com
y http://google.com:80/a/../
devolverán el mismo resultado.Canonicalizar/normalizar una URL?
Preferiría Python 3 y ya revisé el módulo urllib
. Ofrece funciones para dividir URL pero nada para canonicalizarlas. Java tiene la función URI.normalize()
que hace algo similar (aunque no considera que el puerto predeterminado 80 sea igual a ningún puerto determinado), pero ¿hay algo como esto es python?
Como nota al margen, un recurso como el 'http: // google.com /' no es lo mismo que 'http: // google .com: 80/a /../ '. Es decir, si '/ a' no existe, entonces la segunda ruta fallará. Al "canonicalizarlo", pierdes ese caso especial y terminas con un URI válido cuando comenzaste con un inválido ... –