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.")
To embed this project on your website, copy the following code and paste it into your website's HTML: