Módulo Python Urllib

El paquete Urllib es el módulo de manejo de URL para python. Se utiliza para obtener URL (localizadores uniformes de recursos). Utiliza la función urlopen y puede obtener URL utilizando una variedad de protocolos diferentes.

Urllib es un paquete que recopila varios módulos para trabajar con URL, como:

  • urllib.solicitud de apertura y lectura.
  • urllib.parse para analizar URL
  • urllib.error para las excepciones planteadas
  • urllib.robotparser para analizar archivos robot.txt

Si urllib no está presente en su entorno, ejecute el siguiente código para instalarlo.

pip install urllib

Veamos estos en detalle.

urllib.request

Este módulo ayuda a definir funciones y clases para abrir URL (principalmente HTTP). Una de las formas más sencillas de abrir dichas URL es:
urllib.request.urlopen(url)
Podemos ver esto en un ejemplo:

import urllib.request
request_url = urllib.request.urlopen('https://www.geeksforgeeks.org/')
print(request_url.read())
The source code of the URL i.e. Geeksforgeeks.

urllib.parse

Este módulo ayuda a definir funciones para manipular URLs y sus partes componentes, para construirlas o romperl. Por lo general, se enfoca en dividir una URL en pequeños componentes; o unir diferentes componentes de URL en strings de URL.
Podemos ver esto en el siguiente código:

from urllib.parse import * parse_url = urlparse('https://www.geeksforgeeks.org / python-langtons-ant/')
print(parse_url)
print("\n")
unparse_url = urlunparse(parse_url)
print(unparse_url)
ParseResult(scheme='https', netloc='www.geeksforgeeks.org', path='/python-langtons-ant/', params='', query='', fragment='')

https://www.geeksforgeeks.org/python-langtons-ant/

Nota:- Los diferentes componentes de una URL se separan y se vuelven a unir. Intente usar alguna otra URL para una mejor comprensión.

Otras funciones diferentes de urllib.parse son:

Función Usar
urllib.parse.urlparse Separa los diferentes componentes de la URL
urllib.parse.urlunparse Unir diferentes componentes de la URL
urllib.parse.urlsplit Es similar a urlparse() pero no divide los parámetros
urllib.parse.urlunsplit Combina el elemento de tupla devuelto por urlsplit() para formar la URL
urllib.parse.urldeflag Si la URL contiene un fragmento, devuelve una URL que elimina el fragmento.

urllib.error
Este módulo define las clases de excepción planteadas por urllib.request. Cada vez que hay un error al obtener una URL, este módulo ayuda a generar excepciones. Las siguientes son las excepciones planteadas:

  • URLError: se genera por los errores en las URL o los errores al obtener la URL debido a la conectividad, y tiene una propiedad de «razón» que le dice al usuario la razón del error.
  • HTTPError: se genera para los errores HTTP exóticos, como los errores de solicitud de autenticación. Es una subclase o URLError. Los errores típicos incluyen ‘404’ (página no encontrada), ‘403’ (solicitud prohibida)
    y ‘401’ (se requiere autenticación).

Esto lo podemos ver en los siguientes ejemplos:

# URL Error
  
import urllib.request
import urllib.parse
  
# trying to read the URL but with no internet connectivity
try:
    x = urllib.request.urlopen('https://www.google.com')
    print(x.read())
  
# Catching the exception generated     
except Exception as e :
    print(str(e))
URL Error: urlopen error [Errno 11001] getaddrinfo failed
# HTTP Error
  
import urllib.request
import urllib.parse
  
# trying to read the URL
try:
    x = urllib.request.urlopen('https://www.google.com / search?q = test')
    print(x.read())
  
# Catching the exception generated    
except Exception as e :
    print(str(e))
HTTP Error 403: Forbidden

urllib.robotparser
Este módulo contiene una sola clase, RobotFileParser. Esta clase responde a preguntas sobre si un usuario en particular puede o no obtener una URL que publicó archivos robot.txt. Robots.txt es un archivo de texto que crean los webmasters para instruir a los robots web sobre cómo rastrear páginas en su sitio web. El archivo robot.txt le dice al web scraper a qué partes del servidor no se debe acceder.
Por ejemplo :

# importing robot parser class
import urllib.robotparser as rb
  
bot = rb.RobotFileParser()
  
# checks where the website's robot.txt file reside
x = bot.set_url('https://www.geeksforgeeks.org / robot.txt')
print(x)
  
# reads the files
y = bot.read()
print(y)
  
# we can crawl the main site
z = bot.can_fetch('*', 'https://www.geeksforgeeks.org/')
print(z)
  
# but can not crawl the disallowed url
w = bot.can_fetch('*', 'https://www.geeksforgeeks.org / wp-admin/')
print(w)
None
None
True
False

Publicación traducida automáticamente

Artículo escrito por Pulkit_Singh 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 *