Cómo usar Urllib en Python

Cómo usar Urllib en Python

Python contiene un módulo llamado urllib Para manejar tareas relacionadas con el localización de recursos uniformes (URL). Este módulo se instala en Python 3 de forma predeterminada, y obtiene URL de diferentes protocolos a través del Urlopen () función. Urllib se puede utilizar para muchos fines, como leer contenido del sitio web, realizar solicitudes HTTP y HTTPS, enviar encabezados de solicitudes y recuperar encabezados de respuesta. El urllib El módulo contiene muchos otros módulos para trabajar con URL, como urllib.pedido, urllib.analizar gramaticalmente, y urllib.error, entre otros. Este tutorial le mostrará cómo usar el módulo Urllib en Python.

Ejemplo 1: Apertura y lectura de URL con urllib.pedido

El urllib.pedido El módulo contiene las clases y métodos necesarios para abrir y leer cualquier URL. El siguiente script muestra cómo usar urllib.pedido Módulo para abrir una URL y leer el contenido de la URL. Aquí el Urlopen () El método se utiliza para abrir la URL, "https: // www.Linuxhint.com/."Si la URL es válida, entonces el contenido de la URL se almacenará en la variable de objeto nombrada respuesta. El leer() método del respuesta Luego se usa el objeto para leer el contenido de la URL.

#!/usr/bin/env python3
# Módulo de solicitud de importación de Urllib
importar urllib.pedido
# Abra la URL específica para leer usando urlopen ()
respuesta = urllib.pedido.Urlopen ('https: // www.Linuxhint.com/')
# Imprimir los datos de respuesta de la URL
imprimir ("La salida de la URL es: \ n \ n", respuesta.leer())

Producción

La siguiente salida aparecerá después de ejecutar el script.

Ejemplo 2: URL de análisis e incomparable con urllib.analizar gramaticalmente

El urllib.analizar gramaticalmente El módulo se usa principalmente para separarse o unir los diferentes componentes de una URL. El siguiente script muestra diferentes usos del urllib.analizar gramaticalmente módulo. Las cuatro funciones de urllib.analizar gramaticalmente utilizado en el siguiente script incluye urlparse, urlunparse, URLSPLIT, y placa de urluns. El urlparse El módulo funciona como URLSPLIT, y el urlunparse El módulo funciona como placa de urluns. Solo hay una diferencia entre estas funciones; eso es, urlparse y urlunparse contener un parámetro adicional llamado 'parámetros'Para la función de división y de unión. Aquí, la url 'https: // linuxhint.com/play_sound_python/'se usa para dividir y unir la URL.

#!/usr/bin/env python3
# Importar el módulo de análisis de Urllib
importar urllib.analizar gramaticalmente
# Analizar URL usando urlParse ()
urlparse = urllib.analizar gramaticalmente.UrlParse ('https: // Linuxhint.com/play_sound_python/')
imprimir ("\ nthe salida de URL después de analizar: \ n", urlParse)
# Unir URL usando urlunParse ()
urlunparse = urllib.analizar gramaticalmente.Urlunparse (Urlparse)
Imprimir ("\ nthe unir la salida de la url de análisis: \ n", urlunparse)
# Analizar URL usando urlsplit ()
urlsplit = urllib.analizar gramaticalmente.URLSPLIT ('https: // linuxhint.com/play_sound_python/')
Imprimir ("\ nthe salida de URL después de dividir: \ n", URLSPLIT)
# Unir URL usando UrlunSplit ()
urlunsplit = urllib.analizar gramaticalmente.Urlunsplit (URLSPLIT)
imprimir ("\ nthe unir la salida de URL de división: \ n", UrlunSplit)

Producción

Las siguientes cuatro salidas aparecerán después de ejecutar el script.

Ejemplo 3: encabezado de respuesta de lectura de HTML con urllib.pedido

El siguiente script muestra cómo se pueden recuperar las diferentes partes del encabezado de respuesta de la URL a través del info () método. El urllib.pedido Módulo utilizado para abrir la URL 'https: // linuxhint.com/python_pause_user_input/,'Y la información del encabezado de esta URL se imprime a través del info () método. La siguiente parte de este guión le mostrará cómo leer cada parte del encabezado por separado. Aquí el Servidor, Fecha, y Tipo de contenido Los valores se imprimen por separado.

#!/usr/bin/env python3
# Módulo de solicitud de importación de Urllib
importar urllib.pedido
# Abra la URL para leer
urlResponse = urllib.pedido.Urlopen ('https: // linuxhint.com/python_pause_user_input/')
# Lectura de la salida del encabezado de respuesta de la URL
imprimir (urlResponse.info ())
# Leer información del encabezado por separado
imprimir ('Response servidor =', urlResponse.info () ["servidor"])
Imprimir ('La fecha de respuesta es =', UrlResponse.info () ["fecha"])
imprimir ('El tipo de contenido de respuesta es =', UrlResponse.info () ["Content-type"])

Producción

La siguiente salida aparecerá después de ejecutar el script.

Ejemplo 4: Reading Respuestas de URL Línea por línea

Se utiliza una dirección de URL local en el siguiente script. Aquí, un archivo HTML de prueba llamado prueba.html se crea en la ubicación, var/www/html. El contenido de este archivo se lee línea por línea a través del para bucle. El banda() Luego se usa el método para eliminar el espacio de ambos lados de cada línea. Puede usar cualquier archivo HTML del servidor local para probar el script. El contenido del prueba.html El archivo utilizado en este ejemplo se proporciona a continuación.

prueba.HTML:



Página de prueba


#!/usr/bin/env python3
# Importar urllib.módulo de solicitud
importar urllib.pedido
# Abra una URL local para leer
respuesta = urllib.pedido.Urlopen ('http: // localhost/test.html ')
# Lea la URL de la respuesta
Imprimir ('URL:', Respuesta.getURL ())
# Lea el texto de respuesta línea por línea
print ("\ nreading contenido:")
Para la línea en respuesta:
imprimir (línea.banda())

Producción

La siguiente salida aparecerá después de ejecutar el script.

Ejemplo 5: Manejo de excepciones con Urllib.error.Urlerror

El siguiente script muestra cómo usar el Urlerror en Python a través del urllib.error módulo. Cualquier dirección de URL se puede tomar como una entrada del usuario. Si la dirección no existe, entonces una Urlerror Se planteará la excepción y el motivo del error se imprimirá. Si el valor de la URL está en un formato no válido, entonces un ValueError se planteará y el error personalizado se imprimirá.

#!/usr/bin/env python3
# Importar módulos necesarios
importar urllib.pedido
importar urllib.error
# Intente bloquear para abrir cualquier URL para leer
intentar:
url = entrada ("Ingrese cualquier dirección de URL:")
respuesta = urllib.pedido.URLOPEN (URL)
Imprimir (respuesta.leer())
# Atrapa el error de URL que generará al abrir cualquier URL
excepto urllib.error.Urlerror como E:
Imprimir ("Error de URL:", E.razón)
# Atrapa el error de URL no válido
Excepto ValueError:
Imprimir ("Ingrese una dirección de URL válida")

Producción

El script se ejecuta tres veces en la siguiente captura de pantalla. En la primera iteración, la dirección de URL se da en un formato no válido, generando un ValueError. La dirección de URL dada en la segunda iteración no existe, generando un urlerror. Se da una dirección de URL válida en la tercera iteración, por lo que se imprime el contenido de la URL.

Ejemplo 6: Manejo de excepciones con Urllib.error.Error HTTP

El siguiente script muestra cómo usar el Error HTTP en Python a través del urllib.error módulo. Un Htmlerror genera cuando la dirección de URL dada no existe.

#!/usr/bin/env python3
# Importar módulos necesarios
importar urllib.pedido
importar urllib.error
# Tomar entrada cualquier URL válida
url = entrada ("Ingrese cualquier dirección de URL:")
# Enviar solicitud para la URL
solicitud = urllib.pedido.Solicitud (URL)
intentar:
# Intenta abrir la URL
urllib.pedido.Urlopen (solicitud)
Imprimir ("URL existen")
excepto urllib.error.Httperror como E:
# Imprima el código de error y la razón de error
Imprimir ("Código de error:%D \ Nerror Razón:%S"%(E.Código, E.razón))

Producción

Aquí, el script se ejecuta dos veces. La primera dirección de URL tomada como existe la entrada y el módulo ha imprimido un mensaje. La segunda dirección de URL tomada como la entrada no existe y el módulo ha generado el Error HTTP.

Conclusión

Este tutorial discutió muchos usos importantes del urllib Módulo utilizando varios ejemplos para ayudar a los lectores a conocer las funciones de este módulo en Python.