Verifica della disponibilità dei prodotti Amazon tramite Python

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

Come sappiamo, Python è un linguaggio multiuso ampiamente utilizzato per lo scripting. Il suo utilizzo non si limita solo alla risoluzione di calcoli complessi, ma anche all`automazione delle attività quotidiane. Diciamo che vogliamo monitorare la disponibilità di qualsiasi prodotto Amazon e concludere un accordo quando la disponibilità del prodotto cambia, nonché informare l`utente della disponibilità tramite e-mail. Sarà molto divertente scrivere uno script Python per questo. Nota. Installare le librerie richieste (secondo il codice) prima di eseguire lo script. Si noti inoltre che se il prodotto non è attualmente disponibile, non verrà inviata alcuna e-mail all`utente. L`Asin Id deve essere fornito dall`utente per il prodotto che desidera monitorare.

Funzionamento di ogni modulo utilizzato:
  • -> request: Utilizzato per ottenere e pubblicare HTTP richieste
  • -> ora: utilizzata per trovare l`ora corrente, attendere, dormire
  • -> pianificazione: utilizzata per programmare una funzione da eseguire nuovamente dopo intervalli. È simile alla funzionalità "setInterval‚" in JavaScript.
  • -> smptlib: utilizzato per inviare e-mail utilizzando Python.

# Script Python per il controllo della disponibilità dei prodotti Amazon # importazione librerie da lxml import html richieste di importazione dall`ora import sleep import time import schedule import smtplib # ID email per chi vuole verificare la disponibilità receiver_email_id = "EMAIL_ID_OF_USER" def check(url): headers = {` User-Agent`: `Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, come Gecko) Chrome/42.0.2311.90 Safari/537.36`} # aggiunta di intestazioni per mostrare che sei # un browser che sta inviando una richiesta GET page = request.get(url, headers = headers) for i in range(20): # perché controlli continui in # millisecondi o pochi secondi # blocca la tua richiesta sleep(3) # analisi del contenuto html doc = html.fromstring(page .content) # verifica disponibilità XPATH_AVAILABILITY = `//div[@id ="availability"]//text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY) DISPONIBILE ITY = ``.join(RAw_AVAILABILITY).strip() if RAw_AVAILABILITY else Nessuno 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 = prodotto + `disponibilità del prodotto ` # crea una sessione SMTP s = smtplib.SMTP(`smtp.gmail.com`, 587) # avvia TLS per sicurezza s.starttls() # Autenticazione s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # messaggio da inviare headers = " " .join(["from: " + GMAIL_USERNAME, "subject: " + email_subject, "to: " + destinatario, "mime-version: 1.0", "content-type: text/html"]) content = headers + " " + body_of_email s.sendmail(GMAIL_USERNAME, recipient, content) s.quit() def ReadAsin(): # Asin Id è l`ID prodotto che # deve essere fornito dall`utente Asin = `B077PWK5BT` url = "http:// www.amazon.in/dp/" + Asin print ("Elaborazione: "+url) ans = check(url) arr = [ `Solo 1 disponibile in magazzino.`, `Solo 2 in magazzino.`, `Disponibile .`] print(ans) if ans in arr: # s e-mail finale all`utente se # in caso di prodotto disponibile sendemail(ans, Asin) # pianificazione dello stesso codice per l`esecuzione più # volte dopo ogni 1 minuto def job(): print("Tracciamento....") ReadAsin() schedule.every (1).minutes.do(job) while True: # esecuzione di tutte le attività/lavori in sospeso schedule.run_pending() time.sleep(1) 

Output:

Tracciamento.. .. Elaborazione: http://www.amazon.in/dp/B077PWK5BT Solo 1 con disponibilità immediata. Tracciamento.... Elaborazione: http://www.amazon.in/dp/B077PWK5BT Solo 1 con disponibilità immediata. Tracciamento.... Elaborazione: http://www.amazon.in/dp/B077PWK5BT Solo 1 con disponibilità immediata. 

Come creare un controllo disponibilità stock con richieste Python se viene utilizzato JavaScript?

Domanda StackOverflow

Ho scritto del codice che dovrebbe verificare se un prodotto è di nuovo disponibile e quando lo è, inviami un`e-mail per avvisarmi. Funziona quando le cose che sto cercando sono nell`html.

Tuttavia, a volte alcuni oggetti vengono caricati tramite JavaScript. Come posso modificare il mio codice in modo che lo scraping web funzioni anche con JavaScript?

Questo è il mio codice finora:

< codice class="hljs language-python">importazione ora importazione richieste while Vero: # Ottieni l`URL della pagina IKEA url = `https://www.ikea.com/nl/nl/p/flintan-bureaustoel-vissle-zwart-20336841/` # Ottieni il testo da quella pagina e metti tutto in minuscolo productpage = request.get(url).text.lower() # Imposta le stringhe che dovrebbero essere nella pagina se il prodotto non è disponibile outofstockstrings = [`niet beschikbaar voor levering`, `alleen beschikbaar in de winkel `] # Controlla se le stringhe sono nel testo della pagina web se qualsiasi(x in pagina prodotto per x in outofstockstrings): time.sleep(1800) continua altro: # mandami un`email e interrompi il ciclo 

Risposta:

Invece di raschiare e analizzare l`HTML potresti usare lo stock non ufficiale API che utilizza anche il sito web IKEA. Quell`API restituisce dati JSON che sono molto più facili da analizzare e riceverai anche stime quando il prodotto tornerà in stock.

C`è anche un progetto scritto in javascript / node che ti fornisce questo tipo di informazioni direttamente dalla riga di comando: https://github.com/Ephigenia/ikea-availability-checker< /a>

Puoi controllare facilmente la quantità di stock della sedia in tutti i negozi dei Paesi Bassi:

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