pip install requests beautifulsoup4 smtplib

import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# Función para obtener el precio de un producto en Amazon
def obtener_precio(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
        "Accept-Language": "en-US, en;q=0.5"
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.content, 'html.parser')
    
    # Extraer el precio
    precio = soup.find('span', {'id': 'priceblock_ourprice'})
    if precio:
        return float(precio.text.replace('$', '').replace(',', '').strip())
    else:
        return None

# Función para enviar un correo electrónico
def enviar_alerta(producto, precio_actual, precio_objetivo, email_destino):
    remitente = "tu_email@gmail.com"
    contraseña = "tu_contraseña"
    
    mensaje = MIMEMultipart()
    mensaje['From'] = remitente
    mensaje['To'] = email_destino
    mensaje['Subject'] = f"Alerta de precio para {producto['nombre']}"
    
    cuerpo = f"El precio del producto {producto['nombre']} ha bajado a {precio_actual}, que está por debajo de tu objetivo de {precio_objetivo}.\n\nLink: {producto['url']}"
    mensaje.attach(MIMEText(cuerpo, 'plain'))
    
    servidor = smtplib.SMTP('smtp.gmail.com', 587)
    servidor.starttls()
    servidor.login(remitente, contraseña)
    texto = mensaje.as_string()
    servidor.sendmail(remitente, email_destino, texto)
    servidor.quit()

# Lista de productos a seguir
productos = [
    {"nombre": "Producto 1", "url": "https://[Log in to view URL]", "precio_objetivo": 100.0},
    {"nombre": "Producto 2", "url": "https://[Log in to view URL]", "precio_objetivo": 50.0}
]

# Email para recibir alertas
email_destino = "destinatario@gmail.com"

# Verificar precios y enviar alertas si es necesario
for producto in productos:
    precio_actual = obtener_precio(producto['url'])
    if precio_actual and precio_actual < producto['precio_objetivo']:
        enviar_alerta(producto, precio_actual, producto['precio_objetivo'], email_destino)
        print(f"Alerta enviada para {producto['nombre']}")

print("Verificación de precios completada.")

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: