Scrapear el Sitemap

Con este pequeño programa vamos a extraer todos los enlaces del sitemap de cualquier web y vamos a guardarlos en un archivo csv.

Empezamos con un interfaz que se abre en tu ordenador, donde podemos poner la url del sitemap que queremos explorar. Este interfaz comprueba que es código 200 y seguimos adelante.

from tkinter import Tk,Entry,Button,Label,StringVar,Frame, Text
import requests
import pandas as pd
from bs4 import BeautifulSoup

def enviarSitemap():
    try:
        xurl = envioUrl.get()
        req = requests.get(xurl)
        soup=BeautifulSoup(req.text,'lxml')
        code=req.status_code
        Label(entryFrame, text=("El sitemap responde código: {}".format(code)), fg="red", font=("Poppins", 11)).grid(row=3, column=1, sticky="e",padx=20, pady=10)
    except:
        Label(entryFrame, text= "La web insertada NO es correcta", fg="gray", font=("Poppins", 11)).grid(row=3, column=1, sticky="e",padx=20, pady=10)

def enviarCrawler():
    global indiceSitemap
    indiceSitemap = envioUrl.get()
    ventana.destroy()
    
ventana = Tk()
ventana.title("CRAWLER SITEMAP") #Título de la ventana
ventana.columnconfigure(0, weight=1)
ventana.rowconfigure(0, weight=1)
miFrame=Frame(ventana)
miFrame.grid()
entryFrame=Frame(miFrame)
entryFrame.grid(row=4, column=3, sticky="nsew")
Label(entryFrame, text="Inserta la URL del SITEMAP /index_sitemap.xml:", fg="red", font=("Poppins", 14)).grid(row=0, column=0, sticky="w",padx=20, pady=10)

envioUrl = StringVar()
envioUrlEntry=Entry(entryFrame, width=80, textvariable=envioUrl, font=("Poppins", 12))
envioUrlEntry.grid(row=1, columnspan=3,padx=20, pady=20)


botonCode=Button(entryFrame, text="<< 1º Comprobar CODE >>",fg="black", font=("Poppins", 14), command=enviarSitemap)
botonCode.grid(row=3, column=0, sticky="w", padx=20, pady=20)

botonEnvio=Button(entryFrame, text="<< 2º Crawlear SITEMAP >>",fg="black", font=("Poppins", 14), command=enviarCrawler)
botonEnvio.grid(row=3, column=2, sticky="e", padx=20, pady=20)

ventana.mainloop()

Extraemos el index para seguir visitando cada una de las URLs

r = requests.get(indiceSitemap )
soup = BeautifulSoup(r.content)
todas = soup.findAll('loc')
listaXML=[]
for ur in todas:
    listaXML.append(ur.getText())
print(listaXML)

Ahora toca extraer las Urls y comprobar que están operativas (código 200) que no están canonicalizadas y que son indexables marcadas con etiqueta index.

listaURL=[]
for ur in listaXML:
r = requests.get(ur)
soup = BeautifulSoup(r.content)
urls=soup.findAll('loc')
for ur in urls:
    listaURL.append(ur.getText())
listaLimpia = pd.unique(listaURL)
print(listaLimpia)
con=0
listaCanonical=[]
listaIndex=[]
listaCod=[]
miDiccionario={'Pagina':listaLimpia,'Canonical':listaCanonical, 'Indexable':listaIndex, 'Código':listaCod}
for xurl in listaLimpia:
    print("URL principal {}".format(xurl))
    req = requests.get(xurl)
    soup=BeautifulSoup(req.text,'lxml')
    code=req.status_code
    print("La web responde código: {}".format(code))
    listaCod.append(code)
    #///////////Buscamos la etiqueta CANONICAL y la comparamos con la URL////////////////////////////////////
    html=soup.find('link', rel="canonical")
    if html != None:
        canonical=html.get('href')
        if xurl != canonical:
            listaCanonical.append('No indexable')
            print("NO Indexable {}".format(canonical))
        else:
            listaCanonical.append('Indexable')
            print("Misma URL {}".format(canonical))
    else:
        print("No hay etiqueta canonical")
        listaCanonical.append('No canonical')

    
#//////////// Busca la etiqueta NOINDEX en meta.
    html=soup.find_all('meta')
    for h in html:
        c=h.get('content')
        cc=str(c)
        if "noindex" in cc:
            con=1
            print(cc)
            break
    if con>=1:
        print("Hemos encontrado NOINDEX")
        listaIndex.append('No index')
        con=0
    else:
        print("No hay etiqueta NOINDEX")
        listaIndex.append('Index')
        con=0

Por último guardamos todo el contenido en un archivo CSV

frames = pd.DataFrame(miDiccionario)
frames.to_csv('sitemap.csv', encoding = 'utf-8-sig')
frames

Resultados e interpretación

Hemos comprobado todas las URL que esta web tiene en su SiteMap. Todas deben ser código 200 indexables y canonicalizadas hacia si mismas.

Solo una está marcada como noindex.

Compruebo con el inspector y efectivamente es la categoría que no he querido indexar. Lo mejor sería sacarla del sitemap aunque al estar marcada es difícil que la indxe.

Todo puede pasar. Vamos a comprobar en Google «site:pythonparaseo.com/pygame/»

Recuerda que este CSV puedes machearlo con el de Crawleo para encontrar la páginas huerfanas.

Scrapear Material: Automatización en la Recolección de Datos

En el mundo digital actual, scrapear material se ha convertido en una práctica indispensable para muchos profesionales del SEO y el marketing digital. «Scrapear» es el término que se utiliza para referirse al proceso de recolectar información o datos de diversas páginas web de forma automatizada. Esta técnica puede ser particularmente útil para recopilar grandes cantidades de datos en poco tiempo, lo que resulta esencial para el análisis y la toma de decisiones estratégicas basadas en datos concretos.

El scraping puede aplicarse a una gran variedad de áreas, desde la monitorización de precios en comercios electrónicos hasta la agregación de contenido para alimentar bases de datos. Para scrapear material se emplean herramientas y scripts programados específicamente para navegar por la web, acceder a las páginas de interés y extraer la información deseada. Esto puede incluir precios, descripciones de productos, publicaciones en blogs, datos de contacto y mucho más. El proceso se maneja de manera que se respeta la usabilidad y el rendimiento de la web objetivo para evitar posibles bloqueos o penalizaciones por parte de los administradores de los sitios.

Además, al scrapear material y almacenar la información relevante en formatos estructurados como CSV, como se muestra en los ejemplos de código anteriores, facilitamos la integración con otras herramientas y plataformas, permitiendo una manipulación más eficiente y una mejor visualización de los datos recopilados. La eficacia del scraping radica en la precisión y la relevancia del contenido extraído, lo cual asegura que los esfuerzos de SEO y marketing estén orientados y basados en la realidad del ecosistema digital.

Es importante destacar que, aunque el scraping es una técnica poderosa, debe realizarse dentro de los marcos legales y éticos, respetando las políticas de los sitios web y las leyes de protección de datos aplicables. Una práctica responsable de scrapear material no solo protege a los profesionales y empresas de posibles consecuencias legales, sino que también promueve un entorno online más colaborativo y respetuoso.

Juande Marín

Profesor de Marketing digital, divulgador de inteligencia artificial y neuroeducación. Especializado en posicionamiento en buscadores y diseño web. Autor de varios libros relacionados con el comercio electrónico y el marketing digital (McGraw Hill, Paraninfo,…) Juande2marin

¿Quién me pone el ROL de profesor?

El profesor o profesora debe seguir el mismo proceso de automatriculación del alumnado, y una vez completado el proceso debe solicitar que el gestor del campus le cambie el rol para que pueda acceder al contenido exclusivo del profesor. No se hace de forma automatizada para evitar filtraciones. Puede solicitar el cambio de ROL al mail: infor@comercioymarketing.es

¿Cómo doy de alta al alumnado?

Cada alumno puede darse de alta accediendo al Instituto y al módulo desde el el CAMPUS.comercioymarketing.es Durante el proceso tendrá que rellenar un formulario y al finalizar deberá introducir la clave de matriculación que se facilitará al profesor a través de correo electrónico: info@comercioymarketing.es

Presentación del campus.

¿Puedo descargar el ebook?

Todo el material está protegido por los derechos de autor y la Ley de Propiedad Intelectual. No se puede descargar ni difundir total o parcialmente. No obstante si algún alumno desea el material en formato papel podrá adquirirlo en la editorial LULU.com

Para localizar los libros se puede hacer una búsqueda en la propia web por título o autor: Juan de Dios Marín Peñas. Los libros en papel suelen estar promocionados para el alumnado matriculado (75% de descuento).

¿Se adapta a normativa?

Todo el material didáctico está adaptado al Real Decreto del Ciclo Formativo y responde a los Resultados de Aprendizaje que se deben alcanzar.

Para facilitar la evaluación se facilita un cuadro de actividades y su relación con los criterios de evaluación y RA.

¿Cómo se paga?

Los alumnos y alumnas pueden pagar directamente ingresando o transfiriendo el importe de la matrícula a la cuenta facilitada por el gestor del campus (info@comercioymarketing.es).

Para facilitar la identificación de los pagos se aconseja que se hagan de forma agrupada por clase y se identifique el Instituto cuando se haga el ingreso.

 

¿Cuánto cuesta?

El coste es de 7€ al año por cada uno de los módulos que contrate el alumno. El profesor y el Instituto no pagan nada. Estos 7€ da derecho a 9 meses de matriculación con acceso al material didáctico, vídeos, actividades, hosting, etc.


¿Quieres un material didáctico adaptado y actualizado?

Si estás buscando herramientas didácticas adaptadas a las nuevas tecnologías, si quieres utilizar la inteligencia artificial de forma didáctica aportando valor y quieres dinamizar tus clases; nuestra plataforma didáctica interactiva es la solución. Facilitamos material didáctico actualizado, dinámico, interactivo, práctico, editable y motivador.

Contactanos


Categorías


Entradas del Blog

Material didáctico

Descubre un material moderno y adaptado a ciclos formativos.