Como sabemos, Python é uma linguagem multifuncional e amplamente usada para scripts. Seu uso não se limita apenas a resolver cálculos complexos, mas também para automatizar tarefas da vida diária. Digamos que queremos rastrear a disponibilidade de qualquer produto da Amazon e fechar o negócio quando a disponibilidade do produto mudar e informar ao usuário a disponibilidade por e-mail. Será muito divertido escrever um script Python para isso.

Nota: Instale as bibliotecas necessárias (de acordo com o código) antes de executar o script. Além disso, observe se o produto não estiver disponível no momento, nenhum e-mail será enviado ao usuário. O Asin Id deve ser fornecido pelo usuário para o produto que ele deseja acompanhar.

Trabalho de cada módulo utilizado:

-> solicitações: Usado para fazer solicitações HTTP get e post
-> hora: Usado para encontrar a hora atual, esperar, dormir
-> agendar: Usado para agendar uma função para executar novamente após intervalos. É semelhante à funcionalidade “setInterval” em JavaScript.
-> smptlib: Usado para enviar e-mail usando Python.

Abaixo está a implementação do projeto acima:



from lxml import html 
import requests 
from time import sleep 
import time 
import schedule 
import smtplib  
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'} 
      
    
    
    page = requests.get(url, headers = headers)  
    for i in range(20): 
      
      sleep(3
        
        doc = html.fromstring(page.content) 
        
        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'
      
    
    s = smtplib.SMTP('smtp.gmail.com', 587
      
    
    s.starttls()  
      
    
    s.login(GMAIL_USERNAME, GMAIL_PASSWORD)  
      
    
    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 = '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: 
      
        sendemail(ans, Asin)  
def job(): 
    print("Tracking...."
    ReadAsin() 
  
schedule.every(1).minutes.do(job) 
  
while True: 
      
    
    schedule.run_pending()  
    time.sleep(1) 


Resultado:

Rastreamento....
Processando: http://www.amazon.in/dp/B077PWK5BT
Apenas 1 restante em estoque.
Rastreamento....
Processando: http://www.amazon.in/dp/B077PWK5BT
Apenas 1 restante em estoque.
Rastreamento....
Processando: http://www.amazon.in/dp/B077PWK5BT
Apenas 1 restante em estoque.

Observe que o programa pode gerar um erro (Alerta crítico de segurança / Tentativa de login bloqueada) ao enviar o e-mail para o usuário, o que pode ser resolvido modificando a configuração de segurança no aplicativo de e-mail que você está usando.