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