¿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.
¿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 semanaAquí 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!