Uso de import urllib.robotparser en Python: ¿qué es?

| Última modificación: 29 de enero de 2025 | Tiempo de Lectura: 3 minutos
0
(0)

¿Sabes para qué usar import urllib.robotparser dentro de Python?

En el proceso de hacer web scrapping a veces me he encontrado con un archivo llamado robots.txt en los sitios web. Este es un archivo que define qué partes del sitio pueden ser rastreadas por los bots y cuáles no. Interpretar estas reglas es simple en Python si usamos el módulo de import.urllib.robotparser. Este nos permite analizar archivos robots,txt y así ayudar a los desarrolladores a respetar las normas establecidas por los administradores de los sitios web. En el artículo de hoy quiero hablarte de import.urllib.robotparser y cómo puedes hacer uso de él de una manera óptima.

import urllib.robotparser

¿Qué es import urllib.robotparser en Python?

El módulo de import.urllib.robotparser es una parte esencial de la biblioteca estándar de Python y tiene una función principal, la de interpretar las reglas de los archivos robots.txt. Estos archivos indican a los rastreadores web que´partes en un sitio pueden visitar y cuáles no.

En el contexto ya del desarrollo como tal, import.urllib.robotparser nos puede servir para asegurarnos de que nuestro scraper o bot respete las restricciones del sitio y no infrinja términos y condiciones. De este modo se pueden evitar bloqueos de IP o problemas legales.

¿Cómo funciona robots.txt?

El archivo robots.txt se encuentra en la raíz de los sitios web y sigue un formato simple. Por ejemplo:

User-agent: *
Disallow: /admin/
Allow: /public/
Crawl-delay: 5

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Aquí se especifica que todos los bots (user-agent: *) no pueden acceder a la carpeta /admin/, pero sí pueden visitar /public/. También se indica que los bots deben esperar 5 segundos entre cada solicitud (Crawl-delay).

¿Cómo usar import urllib.robotparser?

Python nos facilita la tarea de interpretar estos archivos con la clase RobotFileParser, incluida en el módulo import urllib.robotparser. A continuación, exploraremos sus funciones más importantes.

  • Cargar y analizar un archivo robots.txt: Lo primero que necesitas hacer es leer y analizar el archivo robots.txt de un sitio web. Puedes hacerlo con el siguiente código:
import urllib.robotparser

# Crear el objeto RobotFileParser
rp = urllib.robotparser.RobotFileParser()

# Establecer la URL del archivo robots.txt
rp.set_url("https://www.ejemplo.com/robots.txt")

# Leer y analizar el archivo
rp.read()

Este código descarga y analiza el archivo robots.txt del sitio web especificado.

  • Verificar si una URL puede ser rastreada: Una de las funciones más útiles de import urllib.robotparser es can_fetch, que permite verificar si un bot puede acceder a una URL según las reglas establecidas en robots.txt:
user_agent = "MiBot"
url_permitida = "https://www.ejemplo.com/blog/"
url_restringida = "https://www.ejemplo.com/admin/"

print(rp.can_fetch(user_agent, url_permitida)) # True
print(rp.can_fetch(user_agent, url_restringida)) # False

En este ejemplo de import urllib.robotparser, el bot verifica si tiene permiso para acceder a ciertas rutas del sitio web.

  • Obtener el tiempo de espera entre solicitudes: Algunos sitios web especifican un Crawl-delay en robots.txt para limitar la frecuencia con la que un bot puede hacer solicitudes. Con import urllib.robotparser puedes obtener este valor:
delay = rp.crawl_delay("MiBot")
print("Tiempo de espera:", delay)

Si el archivo robots.txt establece un Crawl-delay de 5, el código imprimirá ese valor.

  • Obtener la tasa de solicitudes permitidas: Algunos sitios web pueden definir un límite de solicitudes por segundo utilizando Request-rate. Puedes obtener esta información con:
rate = rp.request_rate("MiBot")
if rate:
print("Máximo de solicitudes:", rate.requests, "cada", rate.seconds, "segundos")

Esto permite configurar tu scraper para no exceder el número de solicitudes permitidas.

  • Obtener los sitemaps del sitio web: Algunos archivos robots.txt incluyen enlaces a sitemaps, que son archivos XML con una lista de todas las páginas del sitio. Puedes extraer esta información con:
sitemaps = rp.site_maps()
if sitemaps:
for sitemap in sitemaps:
print("Sitemap encontrado:", sitemap)

Esto nos servirá para descubrir páginas del sitio sin tener que rastrear todas las URLs manualmente.

Si te interesa la programación y la tecnología y quieres trabajar en este sector, no dudes en unirte a nosotros en el bootcmap de programación inicial, ideal para ti. Gracias a nuestra formación intensiva te prepararás para una carrera que va a estar llena de oportunidades laborales, estabilidad y altos salarios. No dudes en suscribirte a nuestro bootcamp y amplia el panorama laboral. ¡Evoluciona, cumple tus sueños con KeepCoding!

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 0 / 5. Recuento de votos: 0

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado