es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Código Python para monitorear y detectar cambios en el contenido raspado/código HTML de un sitio web en tiempo real/actual.

Comencé a trabajar en el scraping de contenido de un sitio web y código HTML usando Beautiful Soup. Quiero un código en Python que pueda almacenar el contenido extraído o el código HTML en tiempo real/actual. Luego, después de un intervalo de tiempo específico asignado manualmente, el código debería ejecutarse una vez más y extraer el contenido o el código HTML del mismo sitio web o página web. Y luego debería comparar ambos datos extraídos y mostrar cualquier cambio que ocurra. Quiero que este código monitoree los cambios que ocurren en un sitio web y los informe.

Lo que he hecho hasta ahora:

import requests
from bs4 import BeautifulSoup

url = "https://www.uetmardan.edu.pk/uetm/"

# Paso 1: Obtener el contenido HTML
r = requests.get(url)

# Paso 2: Analizar el contenido HTML
soup = BeautifulSoup(r.content, 'html5lib')

# #print(soup.prettify()) # solo imprimir el código HTML

print(soup.get_text()) # solo imprimir el texto
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Propuesta de solución

    Para lograr el resultado deseado de monitorear los cambios del sitio web y reportarlos, podemos dividir la solución en los siguientes pasos:

    1. Extraer el contenido del sitio web o el código HTML utilizando Beautiful Soup.
    2. Almacenar los datos extraídos en un archivo o base de datos para comparación.
    3. Esperar un intervalo de tiempo específico.
    4. Volver a extraer los mismos datos del sitio web o de la página web.
    5. Comparar los nuevos datos extraídos con los datos almacenados.
    6. Reportar cualquier cambio que haya ocurrido.

    Podemos implementar estos pasos utilizando código Python con las siguientes bibliotecas:

    • Beautiful Soup para la extracción web.
    • El módulo Time para la espera de un intervalo de tiempo específico.
    • El módulo Pandas para la comparación de datos.
    • El módulo Smtp para la notificación por correo electrónico.

    Aquí está una implementación de código de muestra:

    “ `
    import requests
    from bs4 import BeautifulSoup
    import time
    import pandas as pd
    import smtplib

    Establecer la URL del sitio web para extraer

    url = “https://www.uetmardan.edu.pk/uetm/”

    while True:
    # Paso 1: Obtener el contenido HTML
    r = requests.get(url)

    # Paso 2: Analizar el contenido HTML
    sopa = BeautifulSoup(r.content, 'html5lib')
    
    # Paso 3: Almacenar los datos extraídos en un archivo o base de datos para comparación
    with open("data.txt", "w", encoding='utf-8') as file:
        file.write(str(sopa))
    
    # Paso 4: Esperar un intervalo de tiempo específico
    time.sleep(600) # esperar 10 minutos
    
    # Paso 5: Volver a extraer los mismos datos del sitio web o de la página web
    r_new = requests.get(url)
    sopa_new = BeautifulSoup(r_new.content, 'html5lib')
    
    # Paso 6: Comparar los nuevos datos extraídos con los datos almacenados
    with open("data.txt", "r", encoding='utf-8') as file:
        old_data = file.read()
    
    new_data = str(sopa_new)
    
    if old_data != new_data:
        # Reportar cualquier cambio que haya ocurrido
        message = f"Subject: El sitio {url} ha cambiado \n\n El contenido del sitio web ha cambiado. Por favor, compruébelo."
        smtp_server = "smtp.gmail.com"
        port = 587
        sender_email = "sender@gmail.com"
        sender_password = "password"
        receiver_email = "receiver@gmail.com"
    
        with smtplib.SMTP(smtp_server, port) as connection:
            connection.starttls()
            connection.login(sender_email, sender_password)
            connection.sendmail(sender_email, receiver_email, message)
    

    “ `

    Este código se ejecutará indefinidamente, extrayendo el contenido del sitio web o el código HTML cada 10 minutos y comparándolo con los datos previamente almacenados. Si hay una diferencia, enviará una notificación por correo electrónico a la dirección de correo electrónico especificada. Sin embargo, tenga en cuenta que algunos sitios web tienen medidas de seguridad contra la extracción web, por lo que es importante verificar los términos de servicio del sitio web y respetar sus reglas.

Comments are closed.