Verificador de disponibilidad de productos de Amazon usando Python

Como sabemos, Python es un lenguaje multipropósito y se usa ampliamente para secuencias de comandos. Su uso no solo se limita a resolver cálculos complejos, sino también a automatizar tareas de la vida diaria. Digamos que queremos realizar un seguimiento de la disponibilidad de cualquier producto de Amazon y aprovechar la oferta cuando cambie la disponibilidad del producto e informar al usuario de la disponibilidad por correo electrónico. Será muy divertido escribir un script de Python para esto.
Nota: Instale las bibliotecas requeridas (según el código) antes de ejecutar el script. Además, tenga en cuenta que si el producto no está disponible actualmente, no se enviará ningún correo electrónico al usuario. El usuario debe proporcionar Asin Id para el producto del que desea realizar un seguimiento.
 

Funcionamiento de cada módulo utilizado: 
-> requests: se usa para hacer que HTTP obtenga y publique requests 
-> tiempo: se usa para encontrar la hora actual, esperar, dormir 
-> programa: se usa para programar una función para que se ejecute nuevamente después de intervalos. Es similar a la funcionalidad «setInterval» en JavaScript. 
-> smptlib: se usa para enviar correos electrónicos usando Python.

A continuación se muestra la implementación del proyecto anterior:
 

Python3

# Python script for Amazon product availability checker
# importing libraries
from lxml import html
import requests
from time import sleep
import time
import schedule
import smtplib
 
# Email id for who want to check availability
receiver_email_id = "EMAIL_ID_OF_USER"
 
 
def check(url):
    headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36'}
     
    # adding headers to show that you are
    # a browser who is sending GET request
    page = requests.get(url, headers = headers)
    for i in range(20):
        # because continuous checks in
        # milliseconds or few seconds
        # blocks your request
        sleep(3)
         
        # parsing the html content
        doc = html.fromstring(page.content)
         
        # checking availability
        XPATH_AVAILABILITY = '//div[@id ="availability"]//text()'
        RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY)
        AVAILABILITY = ''.join(RAw_AVAILABILITY).strip() if RAw_AVAILABILITY else None
        return AVAILABILITY
 
     
def sendemail(ans, product):
    GMAIL_USERNAME = "YOUR_GMAIL_ID"
    GMAIL_PASSWORD = "YOUR_GMAIL_PASSWORD"
     
    recipient = receiver_email_id
    body_of_email = ans
    email_subject = product + ' product availability'
     
    # creates SMTP session
    s = smtplib.SMTP('smtp.gmail.com', 587)
     
    # start TLS for security
    s.starttls()
     
    # Authentication
    s.login(GMAIL_USERNAME, GMAIL_PASSWORD)
     
    # message to be sent
    headers = "\r\n".join(["from: " + GMAIL_USERNAME,
                        "subject: " + email_subject,
                        "to: " + recipient,
                        "mime-version: 1.0",
                        "content-type: text/html"])
 
    content = headers + "\r\n\r\n" + body_of_email
    s.sendmail(GMAIL_USERNAME, recipient, content)
    s.quit()
 
 
def ReadAsin():
    # Asin Id is the product Id which
    # needs to be provided by the user
    Asin = 'B077PWK5BT'
    url = "http://www.amazon.in/dp/" + Asin
    print ("Processing: "+url)
    ans = check(url)
    arr = [
        'Only 1 left in stock.',
        'Only 2 left in stock.',
        'In stock.']
    print(ans)
    if ans in arr:
        # sending email to user if
        # in case product available
        sendemail(ans, Asin)
 
# scheduling same code to run multiple
# times after every 1 minute
def job():
    print("Tracking....")
    ReadAsin()
 
schedule.every(1).minutes.do(job)
 
while True:
     
    # running all pending tasks/jobs
    schedule.run_pending()
    time.sleep(1)

Producción: 
 

Tracking....
Processing: http://www.amazon.in/dp/B077PWK5BT
Only 1 left in stock.
Tracking....
Processing: http://www.amazon.in/dp/B077PWK5BT
Only 1 left in stock.
Tracking....
Processing: http://www.amazon.in/dp/B077PWK5BT
Only 1 left in stock.

Tenga en cuenta que el programa puede arrojar un error (alerta de seguridad crítica/intento de inicio de sesión bloqueado) al enviar el correo al usuario, lo que puede solucionarse modificando la configuración de seguridad en la aplicación de correo que está utilizando. 
 

Publicación traducida automáticamente

Artículo escrito por md1844 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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