Verificando a disponibilidade de produtos da Amazon usando Python

| | | | | |

Como sabemos, Python é uma linguagem multifuncional amplamente usada para scripts. Seu uso não se limita apenas à resolução de cálculos complexos, mas também à automatização de tarefas cotidianas. Digamos que queremos rastrear a disponibilidade de qualquer produto da Amazon e fechar um negócio quando a disponibilidade do produto mudar, além de informar o usuário sobre a disponibilidade por e-mail. Será muito divertido escrever um script Python para isso. Observação. Instale as bibliotecas necessárias (de acordo com o código) antes de executar o script. Observe também que, 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 deseja rastrear.

Funcionamento de cada módulo usado:
  • -> solicitações: Usado para fazer HTTP obter e postar pedidos
  • -> time: Usado para encontrar a hora atual, esperar, dormir
  • -> schedule: Usado para agendar uma função para ser executada novamente após intervalos. É semelhante à funcionalidade "setInterval‚" em JavaScript.
  • -> smptlib: Usado para enviar e-mail usando Python.

# Script Python para verificador de disponibilidade de produtos da Amazon # importando bibliotecas de lxml import html import requests from time import sleep import time import schedule import smtplib # ID de e-mail para quem deseja verificar a disponibilidade receiver_email_id = "EMAIL_ID_OF_USER" def check(url): headers = {` User-Agent`: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/42.0.2311.90 Safari/537.36`} # adicionando cabeçalhos para mostrar que você é # um navegador que está enviando uma solicitação GET page = requests.get(url, headers = headers) for i in range(20): # porque verificações contínuas em # milissegundos ou alguns segundos # bloqueia sua solicitação sleep(3) # analisando o conteúdo html doc = html.fromstring(page .content) # verificando a disponibilidade XPATH_AVAILABILITY = `//div[@id ="availability"]//text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY) AVAILABIL ITY = ``.join(RAw_AVAILABILITY).strip() if RAw_AVAILABILITY else Nenhum return AVAILABILITY def sendemail(ans, product): GMAIL_USERNAME = "YOUR_GMAIL_ID" GMAIL_PASSWORD = "YOUR_GMAIL_PASSWORD" destinatário = receiver_email_id body_of_email = ans email_subject = produto + ` disponibilidade do produto ` # cria sessão SMTP s = smtplib.SMTP(`smtp.gmail.com`, 587) # inicia TLS para segurança s.starttls() # Autenticação s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # mensagem a ser enviada headers = " " .join(["from: " + GMAIL_USERNAME, "assunto: " + email_subject, "to: " + destinatário, "mime-version: 1.0", "content-type: text/html"]) content = headers + " " + body_of_email s.sendmail(GMAIL_USERNAME, destinatário, conteúdo) s.quit() def ReadAsin(): # Asin Id é o ID do produto que # precisa ser fornecido pelo usuário Asin = `B077PWK5BT` url = "http:// www.amazon.in/dp/" + Asin print ("Processando: "+url) ans = check(url) arr = [ `Apenas 1 em estoque.`, `Apenas 2 em estoque.`, `Em estoque .`] print(ans) if ans in arr: # s terminando o e-mail para o usuário se # caso o produto esteja disponível sendemail(ans, Asin) # programando o mesmo código para ser executado várias # vezes após cada 1 minuto def job(): print("Tracking....") ReadAsin() schedule.every (1).minutes.do(job) while True: # executando todas as tarefas/jobs pendentes schedule.run_pending() time.sleep(1) 

Saída:

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

Como criar um verificador de disponibilidade de estoque com solicitações python se JavaScript for usado?

Pergunta do StackOverflow

Escrevi um código que deve verificar se um produto está de volta ao estoque e, quando estiver, me envie um e-mail para me notificar. Isso funciona quando as coisas que estou procurando estão no html.

Entretanto, algumas vezes certos objetos são carregados por meio de JavaScript. Como eu poderia editar meu código para que o web scraping também funcione com JavaScript?

Este é o meu código até agora:

importação tempo importação solicitações while True: # Obter o URL da página IKEA url = `https://www.ikea.com/nl/nl/p/flintan-bureaustoel-vissle-zwart-20336841/` # Pegue o texto dessa página e coloque tudo em letras minúsculas productpage = requests.get(url).text.lower() # Defina as strings que devem estar na página se o produto não estiver disponível outofstockstrings = [`niet beschikbaar voor alavanca`, `alleen beschikbaar in de winkel `] # Verifique se as strings estão no texto da página da web se qualquer(x na página do produto para x em outofstockstrings): time.sleep(1800) continuar outra: # envie-me um e-mail e quebre o ciclo 

Resposta:

Em vez de raspar e analisar o HTML, você pode usar o estoque não oficial API que o site da IKEA está usando também. Essa API retorna dados JSON que são bem mais fáceis de analisar e você também obterá estimativas quando o produto voltar ao estoque.

Existe até um projeto escrito em javascript/node que fornece esse tipo de informação direto da linha de comando: https://github.com/Ephigenia/ikea-availability-checker< /a>

Você pode verificar facilmente a quantidade de estoque da cadeira em todas as lojas na Holanda:

npx ikea-availability-checker stock --country nl 20336841 

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method