Robots.txt para la Extracción de Datos Web: Una Guía Práctica de Cumplimiento
TL;DR
robots.txt comunica las preferencias de acceso de los rastreadores para un origen; un camino permitido no otorga licencia ni acceso a datos privados.
Coincide con el token de producto declarado del rastreador y la ruta exacta de la URL utilizando un analizador cuyo comportamiento hayas probado.
Considera un fallo en la recuperación de robots, una decisión de política no disponible y un fallo en la página de destino como estados operativos separados.
Crawl-delay es una extensión, no una directiva estandarizada por el Protocolo de Exclusión de Robots.
Verifica las políticas antes de encolar trabajos, luego aplica límites independientes de página, profundidad, concurrencia y retención.
Nstdata Crawl puede proporcionar colecciones gestionadas y salidas listas para LLM después de que tu aplicación haya establecido el ámbito permitido.
¿Qué Significa robots.txt para un Proyecto de Web Scraping?
Un archivo robots.txt indica a los rastreadores cooperantes qué rutas de URL un operador de sitio web desea que accedan. El archivo pertenece a la raíz de un origen, como la ruta robots.txt en el mismo esquema y host que el objetivo. Una política para un host no debe reutilizarse silenciosamente para otro host. Esta guía de robots.txt para web scraping trata el archivo como una entrada a tu política de colección, con una decisión explícita antes de que una URL ingrese a la cola.
El Protocolo de Exclusión de Robots establece que estas reglas no son una forma de autorización de acceso. Una directiva Allow no resuelve derechos de autor, contrato, privacidad o reutilización permitida. Por el contrario, robots.txt no es un lugar seguro para ocultar rutas confidenciales: los recursos privados requieren controles de acceso reales.
Esta distinción sigue siendo relevante cuando usas Nstdata Crawl. Mover la recuperación a una API gestionada cambia quién opera el navegador y la infraestructura de red. Tu equipo aún debe decidir qué orígenes, rutas, campos y usos están aprobados. Mantén esa decisión separada de si un servicio puede técnicamente recuperar una página.
Descubre Nstproxy Crawl - Empieza Tu Prueba Gratuita Hoy
¿Qué Reglas Debes Entender Antes de Comenzar?
Entiende los grupos de User-agent, las reglas de Allow y Disallow, y la diferencia entre la coincidencia estandarizada y las extensiones del proveedor antes de implementar una verificación de política.
Elemento
Significado práctico
Consecuencia operativa
User-agent
Token de producto del rastreador al que se aplica un grupo
Mantén la identidad declarada consistente con la verificación de política
Disallow
Rutas que el grupo no debe rastrear
Excluye las URL coincidentes antes de la colección
Allow
Rutas que el grupo puede rastrear a pesar de una restricción más amplia
Aplica las reglas de precedencia documentadas del analizador
Wildcard y ancla final
Sintaxis de coincidencia definida por el protocolo
Prueba URL y cadenas de consulta codificadas representativas
Crawl-delay
Extensión común fuera de RFC 9309
Verifica el soporte en el analizador elegido y aplica tu propio programador
Sitemap
Sugerencia de descubrimiento, en lugar de permiso
Revisa cada URL descubierta contra el alcance y la política
El protocolo resuelve coincidencias de ruta superpuestas por especificidad, incluyendo su tratamiento de coincidencias equivalentes de Allow y Disallow. No implementes el algoritmo completo buscando una subcadena o tomando la primera línea que aparezca. La codificación, la selección de grupos y las reglas de coincidencia hacen que ese atajo sea poco fiable.
La guía de interpretación de robots.txt de Google documenta el comportamiento de Google. Utilízala para entender el procesamiento específico de Google, incluyendo directivas no soportadas; no asumas que otro rastreador reproduce cada comportamiento de Google. Del mismo modo, una etiqueta meta robots controla otro comportamiento relacionado con la indexación y no reemplaza una verificación de acceso de rastreo.
¿Qué Necesitas Antes de Verificar un Sitio?
Prepara un origen aprobado, el token de producto del rastreador, las URL candidatas, un analizador y una política para archivos robots no disponibles antes de hacer solicitudes a la página de destino. Esta política debería nombrar un propietario que pueda resolver incertidumbres en lugar de permitir que cada trabajador improvise.
Para la demostración en Python, instala un runtime de Python soportado y guarda el script a continuación como robots_probe.py; utiliza la biblioteca estándar. El script descarga solo el archivo robots público de Google y reporta dos decisiones de política. No solicita ninguna de las páginas probadas. Se requiere acceso a la red y una tienda de confianza TLS funcional; no se necesita ninguna cuenta de Nstdata para este método.
Para un manifiesto de producción, registra origen, URL candidata, identidad declarada del rastreador, tiempo de recuperación de política, hash del contenido de la política, versión del analizador, decisión y razón de la decisión. Mantén esos campos junto al inventario de origen para el rastreo de sitios. No almacenes encabezados de autenticación en este manifiesto.
¿Cómo Verificas robots.txt Antes de Recopilar Páginas?
Revisa robots.txt manualmente para una pequeña revisión, usa un parser probado para un manifiesto de URL, o habilita la aplicación a nivel de marco para un rastreador. Estos métodos pueden complementarse entre sí; ninguno hace que una recolección no autorizada por separado sea aceptable.
Método 1: Revisa un alcance pequeño manualmente
Paso 1: Recupera el archivo robots del origen
Abre la ubicación /robots.txt del origen y registra la respuesta y el tiempo de recuperación. Usa el archivo de políticas en el origen relevante en lugar de un dominio padre no relacionado.
Paso 2: Identifica el grupo de rastreadores aplicable
Ubica el grupo que coincide con tu token de producto de rastreador declarado y revisa sus reglas de ruta. Si la interpretación es incierta, mantén la URL fuera de la cola aprobada hasta que se resuelva la incertidumbre.
Paso 3: Registra la decisión para URLs representativas
Evalúa una página que parece permitida, una ruta excluida, una variante de cadena de consulta y cualquier destino redirigido. Guarda las razones con tu manifiesto. Una revisión manual es útil para un piloto, pero se vuelve difícil de mantener cuando los orígenes y las políticas cambian con frecuencia.
Método 2: Agrega una verificación previa en Python
Paso 1: Guarda el script de verificación de políticas
La siguiente demostración utiliza urllib.robotparser, cuyos métodos documentados exponen verificaciones como can_fetch. El comportamiento del parser es parte del contrato de implementación: pruébalo con respecto a las directivas que usan tus fuentes antes de tratarlo como una solución completa de conformidad con RFC.
from urllib.request import Request, urlopen
from urllib.robotparser import RobotFileParser
robots_url ="https://www.google.com/robots.txt"request = Request(robots_url, headers={"User-Agent":"PolicyCheckDemo/1.0"})with urlopen(request, timeout=20)as response:if response.status !=200:raise RuntimeError("La recuperación de robots requiere revisión manual") data = response.read(512_001)iflen(data)>512_000:raise RuntimeError("El archivo de robots excede el límite de esta demo")parser = RobotFileParser(robots_url)parser.parse(data.decode("utf-8").splitlines())for path in["/search","/"]: target ="https://www.google.com"+ path
print(path, parser.can_fetch("PolicyCheckDemo", target))
Paso 2: Ejecuta el script
Ejecuta python robots_probe.py. El archivo público probado negó tanto /search como / para la identidad de demostración. La salida es una evaluación de políticas en el tiempo de recuperación, no evidencia de que se haya recolectado una página de destino o de que un proyecto tenga derechos de reutilización.
Paso 3: Aplica la decisión antes de poner en cola
En tu aplicación, admite solo URLs aprobadas cuya decisión de política pase. Dirige una excepción, un archivo de robots sobredimensionado, una redirección que requiera revisión, o una decisión desconocida a una cola de revisión. Esta política de aplicación deliberadamente conservadora es distinta de las propias reglas del protocolo para resultados HTTP y de red particulares.
Método 3: Hacer cumplir la regla en un marco de rastreador
Paso 1: Habilita la configuración del marco
Para Scrapy, establece ROBOTSTXT_OBEY = True en la configuración del proyecto. Confirma la configuración efectiva en el proyecto en ejecución en lugar de asumir que una plantilla o implementación heredó el valor deseado. La configuración de robots de Scrapy documenta el cambio y la configuración del parser relacionada.
Paso 2: Establece límites de programación explícitos
Configura un retraso de descarga deliberado y un límite de concurrencia para la carga de trabajo aprobada. Respeta los límites específicos de origen soportados y evita asumir que un retraso de rastreo que falta significa que un volumen de solicitudes ilimitado es apropiado.
Paso 3: Prueba un candidato excluido
Usa un origen de prueba controlado para verificar que un candidato excluido nunca alcance la etapa de descarga de destino. Un mensaje de registro diciendo que se cargó el middleware es evidencia más débil que una exclusión observada. Las configuraciones del marco no eliminan la necesidad de revisar redirecciones, solicitudes externas y solicitudes creadas por la aplicación que pueden seguir diferentes rutas de código.
¿Cómo Puede Nstdata Encajar en un Flujo de Trabajo Controlado por Políticas?
Nstdata Crawl se adapta después de que su servicio de políticas haya aprobado el alcance de recolección. Nstdata Crawl es una API de rastreo web para datos listos para LLM que puede convertir secciones de sitios web aprobadas en salidas de página reutilizables. El descubrimiento del sitio y el rastreo recursivo reducen la necesidad de mantener su propio límite de enlaces. El renderizado de JavaScript admite páginas cuyo contenido útil llega después del HTML inicial. La aplicación sigue siendo responsable de la aprobación del alcance, la aceptación de la salida y la reutilización posterior.
Descubrimiento limitado: Establezca límites de página y profundidad y verifique las URL descubiertas contra su inventario aprobado. No asuma que un filtro por sí solo demuestra la aplicación de cada política de origen.
Salidas para diferentes verificaciones: Markdown sirve a RAG y agentes, HTML admite análisis, los enlaces apoyan el descubrimiento, y PDF o capturas de pantalla apoyan la revisión. Los datos en bruto proporcionan bytes de diagnóstico; un sobre de respuesta JSON no garantiza la exactitud del registro comercial.
Enrutamiento de proxy incorporado: Las llamadas estándar gestionadas pueden utilizar los proxies incorporados de Nstdata sin campos separados de Host, Port, Username, Password o Protocol. El enrutamiento de proxy no cambia los permisos, y el tráfico de proxy tiene una dimensión separada en el modelo de facturación de Crawl.
Para conectar el flujo de trabajo, obtenga una clave API a través de Dashboard → Crawl Playground, instale nstdata-ai-crawl bajo Python 3.10 o posterior, y configure NSTDATA_API_TOKEN, APPROVED_PAGE_URL, y opcionalmente EXPECTED_TEXT. El siguiente ejemplo dependiente de credenciales requiere su propia clave y un destino aprobado; no es un resultado de colección autenticado de este tutorial.
[Captura de pantalla: Nstdata Crawl Playground con el objetivo aprobado y el formato solicitado; mantenga la clave API oculta.]
import os
from pathlib import Path
from nstdata_ai_crawl import NstDataClient, ScrapeRequestDto
with NstDataClient(os.environ["NSTDATA_API_TOKEN"], max_response_bytes=1_048_576)as client: result = client.submit_scrape_task_sync(ScrapeRequestDto( url=os.environ["APPROVED_PAGE_URL"], formats=["markdown"], onlyMainContent=True, timeout=60000,))if result.success isnotTrueor result.status !="completed":raise RuntimeError("La colección no se completó con éxito")if result.data isNoneor result.data.truncated isTrue:raise RuntimeError("Contenido faltante o parcial requiere revisión") text = result.data.get_markdown()ifnot text ornot text.strip():raise RuntimeError("No se devolvió Markdown utilizable") expected = os.environ.get("EXPECTED_TEXT")if expected and expected notin text:raise RuntimeError("Falta el texto fuente requerido") Path("accepted-page.md").write_text(text, encoding="utf-8")print("Guardado accepted-page.md; valide los hechos antes de la ingestión")
Comience con una página aprobada e inspeccione el Markdown guardado contra la fuente. Para un rastreo de sitio posterior, establezca maxPages, maxDepth, reglas de inclusión/exclusión, y una condición de parada revisable. Revise manejo de tareas por lotes antes de expandir el trabajo. No afirme que enviar una URL de entrada permitida automáticamente permite cada página descubierta debajo de ella.
¿Por qué podría una verificación de política producir la decisión incorrecta?
Una verificación de política puede producir la decisión incorrecta cuando la implementación usa el origen incorrecto, la identidad del crawler, el comportamiento del parser, o una instantánea de la política. Diagnostique la etapa de política independientemente de la recuperación del objetivo.
Síntoma
Causa probable
Acción correctiva
Permitido en revisión, denegado en el crawler
Token de producto o parser diferente
Compare la identidad exacta y el parser efectivo
Funciona para un host pero falla después del redireccionamiento
Política reutilizada entre orígenes
Revise el origen de destino por separado
La decisión cambia sin un despliegue de código
La política de origen cambió
Compare los hashes de política y los tiempos de recuperación
El trabajador continúa después de una falla de red
La excepción se convirtió en una decisión de permitir
Preserve un estado explícito de desconocido/revisión
Trabajo completado incluye URL excluidas
La aplicación del alcance ocurrió demasiado tarde
Verifique la ruta de encolado y el inventario de URL devueltas
Mantenga los datos aceptados anteriores hasta que los datos de reemplazo pasen la revisión. Si una fuente cambia de política, pause el trabajo afectado y resuelva el nuevo alcance antes de actualizar el conjunto de datos. Orientación de reintento de producción es útil para fallas de recuperación transitorias, pero los reintentos no deben convertir una denegación de política intencional en solicitudes repetidas de destino.
¿Qué debería implementar primero?
Implemente un manifiesto de política y una verificación de admisión de URL probada antes de construir un gran crawler. Verifique un pequeño conjunto de casos permitidos, denegados, redireccionados y de política no disponible, luego conecte solo el trabajo aprobado a la capa de recolección. Las salidas HTML y visuales alternas de Nstdata pueden ayudar a diagnosticar la calidad de la colección una vez que se establezca el límite de la política.
P: ¿robots.txt Otorga permiso para raspar un sitio web?
No. robots.txt comunica preferencias de rastreo; la autorización, términos, privacidad, derechos de autor y reutilización aún requieren una revisión separada.
P: ¿Crawl-delay Es parte del RFC 9309?
No. Crawl-delay es una extensión, y el soporte depende del rastreador o parser. Mantenga sus propios límites de programación explícitos.
P: ¿Un sitemap anula las reglas de Disallow?
No. Un sitemap sugiere URL para el descubrimiento; cada candidato aún necesita evaluación de alcance y política.
P: ¿Un fallo de red debería permitir la recolección en silencio?
No. Preserve el fallo como un estado distinto y aplique su política documentada. La demostración se detiene para revisión en lugar de inventar una decisión de permitir.
P: ¿Un proxy cambia la decisión de política?
No. Una ruta de red diferente no crea permiso ni elimina sus obligaciones de revisión de fuente.
P: ¿Se puede usar un parser de Python sin un marco de rastreador?
Sí. Se puede realizar una verificación de política previa antes de cualquier recolector, siempre que se haya probado su comportamiento de coincidencia e integración para su carga de trabajo.
Ivy Lin
Nov. 12th 2026
Rastrea sitios web completos con una sola solicitud API
Convierte cualquier sitio web en Markdown, HTML, JSON, enlaces, PDF y más, sin gestionar infraestructura de rastreo.
99,8% de éxito con renderizado JavaScript
Obtén datos limpios, listos para LLM, en múltiples formatos