Análisis y procesamiento de URL usando Python – Regex

Requisito previo: expresión regular en Python

La URL o el localizador uniforme de recursos consta de muchas partes de información, como el nombre de dominio, la ruta, el número de puerto, etc. Cualquier URL puede procesarse y analizarse mediante la expresión regular. Entonces, para usar la expresión regular, tenemos que usar la biblioteca re en Python.

Ejemplo:

URL: https://www.geeksforgeeks.org/courses
When we parse the above URL then we can find

Hostname: geeksforgeeks.com
Protocol: https

Estamos usando la función re.findall() de la biblioteca re para buscar el patrón requerido en la URL.

Sintaxis: re.findall(regex, string)  

Devuelve: todas las coincidencias no superpuestas del patrón en la string, como una lista de strings. 

Ahora, veamos los ejemplos:

Ejemplo 1: en este ejemplo, extraeremos el protocolo y el nombre de host de la URL dada.

  • Expresión regular para extraer el grupo de protocolos: ‘ (\w+)://.
  • Expresión regular para extraer el grupo de nombres de host: ‘ ://www.([\w\-\.]+).

Metacaracteres utilizados:

  • \w: Coincide con cualquier carácter alfanumérico, esto es equivalente a la clase [a-zA-Z0-9_].
  • +: Una o más apariciones de caracteres anteriores.

Código:

Python3

# import library
import re  
  
# url link
s = 'https://www.geeksforgeeks.org/'
  
# finding the protocol 
obj1 = re.findall('(\w+)://',
                  s)
print(obj1)
  
# finding the hostname which may
# contain dash or dots
obj2 = re.findall('://www.([\w\-\.]+)', 
                  s)
print(obj2)

Producción:

['https']
['geeksforgeeks.org']

Ejemplo 2: si la URL es de un tipo diferente, como ‘ file://localhost:4040/zip_file ‘, junto con el número de puerto, entonces para extraer el número de puerto, ya que es opcional, usaremos el ‘? ‘ notación. Aquí el número de puerto ‘ 4040′ aparece después del signo ‘:’ . Por lo tanto, como es un dígito (:(\d+)) se utiliza. Para que sea opcional, ya que todas las URL no terminan con el número de host, se usa esta sintaxis ‘(:(\d+))?’.

Metacaracteres utilizados:

  • \d: coincide con cualquier dígito decimal, esto es equivalente a la clase establecida [0-9].
  • +: Una o más apariciones de caracteres anteriores.
  • ?: Coincide con cero o una aparición.

Código:

Python3

# import library
import re  
  
# url link
s = 'file://localhost:4040/abc_file'
  
# finding the file capture group
obj1 = re.findall('(\w+)://', s)  
print(obj1)
  
# finding the hostname which may 
# contain dash or dots
obj2 = re.findall('://([\w\-\.]+)', s)
print(obj2)
  
# finding the hostname which may 
# contain dash or dots or port
# number
obj3 = re.findall('://([\w\-\.]+)(:(\d+))?', s)
print(obj3)

Producción:

['file']
['localhost']
[('localhost', ':4040', '4040')]

Ejemplo 3: para una URL general, se puede usar esto, donde también se pueden construir los elementos de la ruta.

Python3

# import library
import re
  
# url
s = 'http://www.example.com/index.html' 
  
# searching for all capture groups
obj = re.findall('(\w+)://([\w\-\.]+)/(\w+).(\w+)',
                 s)
  
print(obj)

Producción:

[('http', 'www.example.com', 'index', 'html')]

Publicación traducida automáticamente

Artículo escrito por sangy987 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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