El web scraping es una técnica poderosa para extraer datos de sitios web, pero debe hacerse con responsabilidad. Un elemento crucial del web scraping es comprender y respetar el archivo robots.txt. Este artículo proporciona una visión en profundidad de robots.txt, su papel en el web scraping y las mejores prácticas a seguir.
¿Qué es robots.txt?
El archivo robots.txt es un estándar utilizado por los sitios web para comunicarse con los robots y rastreadores web. Especifica a qué partes del sitio pueden o no pueden acceder los sistemas automatizados. Aunque está diseñado principalmente para los motores de búsqueda, el archivo robots.txt también afecta a las prácticas de raspado web.
Propósito
El objetivo principal de robots.txt es indicar a los rastreadores web (como los de los motores de búsqueda) qué páginas o secciones de un sitio web pueden rastrear o indexar. Esto puede ayudar a evitar que ciertos contenidos aparezcan en los resultados de los motores de búsqueda, gestionar la carga del servidor y controlar la accesibilidad de información privada o sensible. Con él, los administradores de sitios controlan y gestionan las actividades de los rastreadores web, evitando sobrecargas y protegiendo los datos sensibles.
Ubicación
El archivo robots.txt debe colocarse en el directorio raíz del sitio web. Por ejemplo, debe ser accesible a través de http://www.example.com/robots.txt.
Formato
El archivo consta de texto sencillo y sigue una estructura básica. Incluye directivas que especifican qué agentes de usuario (bots) deben seguir qué reglas.
Directivas comunes:
-
Agente de usuario
Define a qué rastreador web se aplican las siguientes reglas.
Por ejemplo: User-agent: *
El asterisco (*) es un comodín que se aplica a todos los bots. -
No permitir
Especifica a qué rutas o páginas no debe acceder un rastreador.
Por ejemplo: No permitir: /privado/
Esto indica a los robots que no rastreen ninguna URL que empiece por /private/. -
Permitir
Anula una directiva Disallow para rutas específicas.
Por ejemplo: Permitir: /privado/pagina-publica.html
Esto permite a los rastreadores acceder a public-page.html aunque /private/ no esté permitido. -
Retraso de arrastre
Establece un retardo entre peticiones para gestionar la carga del servidor.
Por ejemplo: Retraso de arrastre: 10 -
Mapa del sitio
Indica la ubicación del mapa del sitio XML para ayudar a los rastreadores a encontrar e indexar las páginas de forma más eficaz.
Por ejemplo: Mapa del sitio: http://www.example.com/sitemap.xml
Ejemplo de archivo robots.txt
User-agent: * No permitir: /privado/ Permitir: /privado/pagina-publica.html Retraso de rastreo: 12 Mapa del sitio: http://www.example.com/sitemap.xml
Consideraciones adicionales
- Algunos motores de búsqueda tienen un límite de tamaño para los
robots.txt
normalmente 500 KB. Asegúrate de que el archivo no supere este límite. - En
robots.txt
debe utilizar la codificación UTF-8. El uso de otras codificaciones puede impedir el correcto análisis. - Algunos rastreadores (como Googlebot) admiten el uso de comodines en
No permitir
yPermitir
(por ejemplo*
para cualquier carácter,$
para el final de una cadena).No permitir: /privado/* No permitir: /temp/$
- En
robots.txt
distingue entre mayúsculas y minúsculas. Por ejemplo,/Admin/
y/admin/
son caminos diferentes. - Los ciudadanos pueden utilizar el
#
para añadir comentarios en el archivo, que son ignorados por los rastreadores pero pueden ayudar a los administradores a entender y mantener el archivo.# Impedir que todos los rastreadores accedan a las páginas de administración Agente de usuario: * No permitir: /admin/
- Antes de aplicar el
robots.txt
a un entorno de producción, utilice herramientas (como el comprobador de robots.txt de Google Search Console) para probar las reglas y asegurarse de que funcionan como se espera. - En el caso de sitios web de gran tamaño o con contenido dinámico, puede ser necesario generar dinámicamente el archivo
robots.txt
archivo. Asegúrese de que el archivo generado sea siempre válido e incluya todas las reglas necesarias. - No todos los rastreadores obedecen la
robots.txt
por lo que pueden ser necesarias medidas adicionales (como cortafuegos de servidor, listas negras de IP, etc.) para proteger el contenido sensible de rastreadores maliciosos. - Si desea impedir que los motores de búsqueda indexen determinadas páginas pero permitir que los rastreadores accedan a ellas para obtener otros contenidos, utilice la opción
noindex
en lugar deNo permitir
.<meta name="robots" content="noindex">
- Trate de mantener el
robots.txt
y evite reglas demasiado complejas. Las reglas complejas pueden ser difíciles de mantener y dar lugar a posibles errores de análisis.
Cómo afecta robots.txt al Web Scraping
-
Directrices para orugas
La función principal de robots.txt es proporcionar instrucciones a los rastreadores web sobre a qué partes del sitio no se debe acceder. Por ejemplo, si un archivo o directorio está prohibido en robots.txt, se espera que los rastreadores eviten esas zonas.
-
Respeto de robots.txt
- Raspado ético: Muchos raspadores y rastreadores web éticos respetan las normas especificadas en robots.txt por cortesía hacia los propietarios de los sitios y para evitar sobrecargar el servidor.
- Consideraciones jurídicas: Aunque no es jurídicamente vinculante, ignorar el archivo robots.txt a veces puede acarrear problemas legales, sobre todo si el scraping causa daños o incumple las condiciones del servicio.
-
Vías no permitidas frente a vías permitidas
- Vías no permitidas: Se especifican mediante la directiva Disallow. Por ejemplo,
No permitir: /datos-privados/
significa que todos los rastreadores deben evitar el directorio /private-data/. - Vías permitidas: Si se permiten determinados directorios o páginas, pueden especificarse mediante la directiva Permitir.
- Vías no permitidas: Se especifican mediante la directiva Disallow. Por ejemplo,
-
Reglas específicas de agente de usuario
El archivo robots.txt puede especificar reglas para diferentes rastreadores utilizando la directiva User-agent.
Por ejemplo:
Agente de usuario: Googlebot
No permitir: /no-google/Esto bloquea el acceso de Googlebot a /no-google/ pero permite el de otros rastreadores.
-
Carga del servidor
Siguiendo las directrices de robots.txt, los "scrapers" reducen el riesgo de sobrecargar un servidor, lo que puede ocurrir si se realizan demasiadas peticiones con demasiada rapidez.
-
No es un mecanismo de seguridad
El archivo robots.txt no es un elemento de seguridad. Es una directriz, no una restricción. Depende de que los rastreadores respeten las normas establecidas. Los rastreadores malintencionados o programados para ignorar robots.txt pueden seguir accediendo a las zonas no permitidas.
-
Cumplimiento y buenas prácticas
- Respetar robots.txt: Para evitar posibles conflictos y respetar a los operadores de los sitios web, los scrapers deben atenerse a las reglas definidas en robots.txt.
- Tenga en cuenta el estado de robots.txt: Compruebe siempre el archivo robots.txt antes de escrapear un sitio para asegurarse de que cumple las políticas del sitio.
Conceptos erróneos comunes sobre robots.txt
-
robots.txt es legalmente vinculante
robots.txt no es un contrato legal, sino un protocolo para gestionar el acceso de rastreadores. Aunque es crucial para el scraping ético, no impone legalmente restricciones de acceso.
-
robots.txt impide todo el scraping
robots.txt es una directriz para robots y rastreadores, pero no impide todas las formas de scraping. El scraping manual o las herramientas sofisticadas pueden seguir accediendo a zonas restringidas.
-
robots.txt protege los datos confidenciales
robots.txt no es una función de seguridad. Está pensado para gestionar el acceso de rastreadores más que para proteger información sensible.
Cómo raspar páginas de un sitio web con robots.txt

1. Preparar el raspado
Configuración del entorno
Instale lo necesario Python bibliotecas:
importar peticiones from bs4 import BeautifulSoup import tiempo
Elegir las herramientas adecuadas
- Peticiones: Para realizar peticiones HTTP.
- BeautifulSoup: Para analizar HTML y XML.
- Chatarra: Un completo marco de raspado web.
- Selenio: Para interactuar con contenidos cargados dinámicamente.
Evaluar las condiciones de servicio del sitio web
Revisa las condiciones de servicio del sitio web para asegurarte de que tus acciones cumplen sus políticas. Algunos sitios web prohíben explícitamente el scraping.
2. Raspado con precaución
Obtención y análisis de robots.txt
En primer lugar, compruebe el archivo robots.txt para conocer las reglas de rastreo del sitio:
respuesta = requests.get('https://example.com/robots.txt') robots_txt = response.text def parse_robots_txt(robots_txt): rules = {} user_agent = '*' for line in robots_txt.split('\n'): if line.startswith('User-agent'): user_agent = line.split(':')[1].strip() elif line.startswith('Disallow'): path = line.split(':')[1].strip() rules[user_agent] = rules.get(user_agent, []) + [path] return reglas reglas = parse_robots_txt(robots_txt)
Identificación de rutas permitidas y no permitidas
Determine a qué rutas puede acceder legal y éticamente basándose en las directivas robots.txt:
allowed_paths = [path for path in rules.get('*', []) if not path.startswith('/')]
Gestión ética de las rutas no permitidas
Si necesita datos de rutas no permitidas, o quiere hacer scraping de sitios web protegidos por robots.txt, considere las siguientes opciones:
- Póngase en contacto con el propietario del sitio web: Solicitar permiso para acceder a los datos.
- Utiliza métodos alternativos: Explorar API o fuentes de datos públicas.
3. Métodos alternativos de acceso a los datos
Las API y sus ventajas
Muchos sitios web ofrecen API que proporcionan un acceso estructurado a sus datos. El uso de API suele ser más fiable y respetuoso que el scraping.
Fuentes públicas de datos
Busque datos públicos que puedan satisfacer sus necesidades. Los sitios web gubernamentales, las instituciones de investigación y las plataformas de datos abiertos son buenos lugares para empezar.
Acuerdos para compartir datos
Póngase en contacto con el propietario del sitio web para negociar acuerdos de intercambio de datos. Esto puede facilitar el acceso a los datos respetando las políticas del sitio.
4. Técnicas avanzadas
Raspado de contenidos cargados dinámicamente
Utilice Selenium o herramientas similares para raspar el contenido que se carga dinámicamente mediante JavaScript:
from selenium import webdriver driver = webdriver.Chrome() driver.get('https://example.com') html = driver.page_source soup = BeautifulSoup(html, 'html.parser')
Uso de navegadores headless
Los navegadores sin cabeza, como Headless Chrome o PhantomJS, pueden interactuar con páginas web sin mostrar una interfaz de usuario, lo que los hace útiles para el scraping de contenidos dinámicos.
Evitar los límites de detección y manipulación
Rote los agentes de usuario, utilice proxies y aplique retardos entre solicitudes para imitar el comportamiento humano y evitar ser bloqueado.
OkeyProxy es un potente proveedor de proxy que admite rotación automática de IP residenciales con alta calidad. Con ISP que ofrecen más de 150 millones de IP en todo el mundo, ahora puedes registrarte y recibir una prueba gratuita de 1 GB.

Conclusión
Siguiendo esta guía, podrá navegar por las complejidades del scraping de páginas de sitios web con robots.txt respetando las normas éticas y legales. Respetar el archivo robots.txt no sólo le ayudará a evitar posibles problemas legales, sino que también le garantizará una relación de cooperación con los propietarios de los sitios web. ¡Feliz scraping!