Utilice Python para extraer URL de un mapa del sitio XML – ¡Código probado!

SamSin categoría Leave a Comment

¿Alguna vez ha deseado utilizar Python para extraer una lista depurada de URL del mapa del sitio de una página web? En esta breve guía, le explicaré una manera rápida y sencilla de realizarlo utilizando Python y Google Colab.

Si simplemente desea probar el código, puede hacer una copia de este archivo de Google Colab y experimentarlo usted mismo.

Bibliotecas requeridas

Para esta tarea, utilizaremos las siguientes bibliotecas:

Beautiful Soup 4

Beautiful Soup 4 (BS4) es una biblioteca de Python utilizada para el raspado web y el análisis de documentos HTML o XML, que empleamos aquí para extraer URL del archivo robots.txt y de los mapas del sitio. Para obtener más información sobre Beautiful Soup 4, puede visitar el sitio web oficial aquí.

Python Requests

La biblioteca Requests es un módulo de Python potente utilizado para realizar solicitudes HTTP, y desempeña un papel crucial en este código al recuperar el archivo robots.txt y los mapas del sitio de las URL proporcionadas. Para obtener más información sobre la biblioteca Requests, puede visitar la documentación oficial aquí.

Pandas

Pandas no es estrictamente necesario para esta tarea, ya que podríamos simplemente generar todas las URL en una lista. Sin embargo, es probable que desee realizar un análisis adicional de las URL una vez que las haya extraído, por lo que tenerlas en un DataFrame de Pandas será útil. Para obtener más información sobre Pandas, puede visitar la documentación oficial aquí.

Comprendiendo el código

Analicemos el código paso a paso:

1. Importación de las bibliotecas requeridas

import requests
from bs4 import BeautifulSoup
import pandas as pd

2. Extracción de URL del mapa del sitio

def extract_urls_from_sitemap(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'xml')
    urls = []

if soup.find('sitemapindex'):
    sitemaps = soup.find_all('sitemap')
    for sitemap in sitemaps:
        sitemap_url = sitemap.find('loc').text
        print(f'found sitemap index: {sitemap_url}. Adding URLs to list')
        urls.extend(extract_urls_from_sitemap(sitemap_url))
elif soup.find('urlset'):
    print(f'no nested indexes found in the main sitemap file. Adding URLs to list')
    locs = soup.find_all('loc')
    urls = [loc.text for loc in locs]

return urls

La función extract_urls_from_sitemap toma como entrada una URL de un mapa del sitio y extrae recursivamente todas las URL presentes en el mapa del sitio. Utiliza la función requests.get para recuperar el contenido del mapa del sitio y la biblioteca BeautifulSoup para analizar la estructura XML. La función verifica si el mapa del sitio es un índice de mapa del sitio (contiene mapas del sitio anidados) o un mapa del sitio regular (contiene entradas de URL). Luego procede en consecuencia, extrayendo las URL y anexándolas a la lista urls.

3. Creación de un DataFrame

def create_dataframe(urls):
    df = pd.DataFrame(urls, columns=['URL'])
    return df

La función create_dataframe toma como entrada una lista de URL y crea un DataFrame de Pandas para almacenar las URL. Cada URL se coloca en una fila separada bajo la columna ‘URL’.

4. Recuperación de URL del mapa del sitio

def get_urls_from_sitemap(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')

for line in soup.text.split('\n'):
    if line.startswith('Sitemap:'):
        sitemap_url = line.split(': ')[1]

all_urls = extract_urls_from_sitemap(sitemap_url)

df = create_dataframe(all_urls)
return df

robots_txt_url = 'https://sheetsociety.com/robots.txt'
urls_df = get_urls_from_sitemap(robots_txt_url)

La función get_urls_from_sitemap toma como entrada la URL del archivo robots.txt del sitio web. Recupera el archivo y utiliza Beautiful Soup para extraer la URL del mapa del sitio. Luego llama a la función extract_urls_from_sitemap para obtener todas las URL del mapa del sitio. Finalmente, crea un DataFrame utilizando la función create_dataframe, almacenando las URL extraídas.

Ejecución del código

Para ejecutar el código y extraer URL de un mapa del sitio, siga estos pasos:

  1. Abra Google Colab o cualquier entorno de Python que sea compatible con las bibliotecas requeridas. Si no ha utilizado las bibliotecas anteriormente, necesitará instalarlas primero. Puede hacerlo ejecutando !pip install [the name of the library that's missing]
  2. Pegue el código en la celda de código.
  3. Reemplace la variable robots_txt_url con la URL del archivo robots.txt que contiene la URL del mapa del sitio deseado
  4. Ejecute el código.

Conclusión

En este artículo, hemos explorado un fragmento de código Python que extrae URL de mapas del sitio de páginas web, incluso en casos con índices anidados. Al aprovechar el poder de Beautiful Soup, Requests y Pandas, los especialistas en SEO pueden recuperar fácilmente URL de mapas del sitio para realizar análisis adicionales, optimización y otras tareas relacionadas con el SEO. Google Colab proporciona un entorno conveniente para ejecutar este código y obtener el DataFrame de URL deseado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *