Primeros pasos con Robots.txt y Sitemaps para Web Scraping

Guías, 13-nov-20245 minutos de lectura

En el vasto panorama digital, donde innumerables sitios web compiten por la atención, es crucial entender las reglas del juego. Para los desarrolladores web, los profesionales de SEO y los creadores de contenidos, descifrar robots.txt es clave para un scraping web ético y eficaz. Esta guía le ayudará a entender cómo interactuar de forma responsable con los sitios web utilizando robots.txt y sitemaps.

Comprender el papel de Robots.txt en el rastreo web

El rastreo web es la clave para que los motores de búsqueda descubran e indexen contenidos en Internet. Los sitios web utilizan archivos robots.txt como herramienta principal para gestionar y controlar este comportamiento de rastreo. Estos archivos sirven como conjunto de instrucciones para los robots web, incluidos los robots de los motores de búsqueda, y les indican a qué contenidos deben acceder o qué contenidos deben ignorar.

El objetivo de robots.txt es doble. Ayuda a los propietarios de sitios web a proteger la información confidencial y optimizar el rendimiento del servidor, al tiempo que proporciona un marco para el raspado ético de la web.

Comprender Robots.txt 

Para ilustrar el funcionamiento de robots.txt, consideremos el ejemplo de este sitio web. Un archivo robots.txt típico incluye directivas como User-agent, Disallow y Allow.

  • User-agent especifica qué bots deben seguir las reglas. Por ejemplo, "User-agent: *" se aplica a todos los bots.
  • Disallow impide que los bots accedan a áreas específicas, como secciones administrativas o directorios privados.
  • Permitir permite el acceso a determinados recursos, garantizando que se pueda acceder a los archivos dinámicos esenciales para las funciones del sitio.

En este sitio web, el robots.txt aparece como sigue:

  • Como puede ver, este sitio web No permite el acceso a estas rutas URL:
    • /wp-content/uploads/wc-logs/
    • /wp-content/uploads/woocommerce_transient_files/
    • /wp-content/uploads/woocommerce_uploads/
    • /wp-admin/ (área de administración de WordPress)
  • Permitir el acceso específicamente a /wp-admin/admin-ajax.phppermitiendo a los rastreadores llegar a este archivo para la funcionalidad AJAX necesaria.
  • Bloque Yoast SEO:
    • La línea Rechazar: está vacío, lo que significa que este bloque no añade ninguna restricción adicional.
    • Mapa del sitio proporcionado: https://daystate.com/sitemap_index.xmlque ayuda a los motores de búsqueda a localizar todas las URL clave para su indexación.

¿Qué es un sitemap?

Un mapa del sitio es un componente crucial de un sitio web, que enumera todas sus URL importantes. Actúa como una hoja de ruta para los motores de búsqueda, permitiéndoles descubrir e indexar rápidamente contenidos nuevos o actualizados.

Para los propietarios de sitios web, los sitemaps tienen un valor incalculable. Garantizan que todas las páginas relevantes sean visibles para los motores de búsqueda, facilitando una mejor indexación y clasificación. Los beneficios de los sitemaps van más allá del SEO, ya que ayudan a la experiencia del usuario al garantizar que el contenido sea fácilmente localizable.

El archivo robots. txt de https://daystate.com/robots.txt incluye un enlace a su mapa del sitio, que proporciona una ruta estructurada para que la sigan los motores de búsqueda. Este enlace es esencial para un rastreo e indexación eficientes del contenido del sitio.

Este es el aspecto del mapa del sitio de Daystate:

Por ejemplo, hagamos clic en"https://daystate.com/product-sitemap.xml".

Como puede ver, podemos ver todas las URLs de los "Productos" en este escenario. A continuación se muestra un script de Python diseñado para raspar cada producto. Comienza analizando la página XML de productos para extraer todas las URL de los productos, luego itera a través de cada URL para extraer el título del producto y el precio.

import re

import requests
from bs4 import BeautifulSoup


def fetch_xml_sitemap(sitemap_url) -> str:

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
    }

    response = requests.get(sitemap_url, headers=headers)
    response.raise_for_status()  # Check for request errors

    return response.content


def extract_endpoints(response_content):
    output_endpoints = []

    soup = BeautifulSoup(response_content, "xml")
    # Loop through each product entry in the sitemap
    for url in soup.find_all("url"):
        # Extract link, last modified date, and image (if available)
        endpoint = url.find("loc").text if url.find("loc") else None
        if endpoint is not None:
            output_endpoints.append(endpoint)

    return output_endpoints

def extract_product_info(product_url):
    headers = {
        "User-Agent": "input_user_agent"}

    proxy = {
        "http": "http://username:[email protected]:6060",
        "https": "http://username:[email protected]:6060"
    }

    response = requests.get(product_url, headers=headers, proxies=proxy)

    soup = BeautifulSoup(response.content, "html.parser")

    pattern = re.compile(r"^product-\d+$")
    try:
        product_div = soup.find("div", id=pattern)
        product_title = product_div.find("h1", {"class":"product_title entry-title"}).text
        product_price = product_div.find("bdi").text
        return product_title, product_price
    except:
        print("Error Extracting Product Information")
        return None, None

if __name__ == '__main__':
    url_sitemap = "https://daystate.com/product-sitemap.xml"

    sitemap_xml = fetch_xml_sitemap(url_sitemap)

    sitemap_urls = extract_endpoints(sitemap_xml)

    for url in sitemap_urls:
        print(extract_product_info(url))

Por qué ambos archivos son importantes para el SEO y el Web Scraping

Juntos, los archivos robots.txt y los sitemaps forman la columna vertebral del SEO y de las prácticas éticas de web scraping. Robots.txt guía a los rastreadores web por las zonas permitidas, salvaguardando los datos sensibles y reduciendo la carga del servidor. Al mismo tiempo, los sitemaps impulsan el descubrimiento de contenidos por parte de los motores de búsqueda, garantizando que las nuevas páginas se indexen rápidamente.

Para los web scrapers, respetar estos archivos es primordial. Ignorar las directivas robots.txt puede acarrear sanciones, perjudicando tanto la reputación como la clasificación en los motores de búsqueda. Los scrapers éticos siguen estas directrices, promoviendo un entorno digital respetuoso.

Conclusión

Robots.txt y los sitemaps son herramientas indispensables para el rastreo web. Proporcionan un enfoque estructurado para gestionar el acceso al sitio y la indexación, lo que beneficia tanto a los propietarios del sitio como a los rastreadores web.
Si comprende y respeta estos elementos, podrá optimizar sus estrategias digitales, mejorar el SEO y llevar a cabo prácticas éticas de web scraping. Recuerde que el uso responsable mantiene el equilibrio del ecosistema web, garantizando una experiencia positiva para todas las partes interesadas.