Überprüfen der Amazon-Produktverfügbarkeit mit Python

| | | | | |

Wie wir wissen, ist Python eine Mehrzwecksprache, die häufig für die Skripterstellung verwendet wird. Sein Einsatz beschränkt sich nicht nur auf das Lösen komplexer Berechnungen, sondern auch auf die Automatisierung alltäglicher Aufgaben. Nehmen wir an, wir möchten die Verfügbarkeit eines beliebigen Amazon-Produkts verfolgen und ein Geschäft abschließen, wenn sich die Verfügbarkeit des Produkts ändert, sowie den Benutzer per E-Mail über die Verfügbarkeit informieren. Es wird viel Spaß machen, dafür ein Python-Skript zu schreiben. Notiz. Installieren Sie die erforderlichen Bibliotheken (gemäß dem Code), bevor Sie das Skript ausführen. Beachten Sie auch, dass keine E-Mail an den Benutzer gesendet wird, wenn das Produkt derzeit nicht verfügbar ist. Die Asin-ID muss vom Benutzer für das Produkt, das er verfolgen möchte, bereitgestellt werden.

Funktionsweise jedes verwendeten Moduls:
  • -> Anfragen: Wird verwendet, um HTTP abzurufen und zu posten Anfragen
  • -> Zeit: Wird verwendet, um die aktuelle Zeit zu finden, zu warten, zu schlafen
  • -> Zeitplan: Wird verwendet, um eine Funktion so zu planen, dass sie nach Intervallen erneut ausgeführt wird. Es ähnelt der "setInterval"-Funktionalität in JavaScript.
  • -> smptlib: Wird zum Senden von E-Mails mit Python verwendet.

# Python-Skript für die Verfügbarkeitsprüfung von Amazon-Produkten # Importieren von Bibliotheken aus lxml import html import reviews from time import sleep import time Import schedule import smtplib # E-Mail-ID für diejenigen, die die Verfügbarkeit prüfen möchten 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`} # Hinzufügen von Headern, um zu zeigen, dass Sie # ein Browser sind, der eine GET-Anfrage sendet page = request.get(url, headers = headers) for i in range(20): # weil kontinuierliche Prüfungen in # Millisekunden oder wenigen Sekunden # Ihre Anfrage blockieren sleep(3) # HTML-Inhalt analysieren doc = html.fromstring(page .content) # Prüfung der Verfügbarkeit XPATH_AVAILABILITY = `//div[@id ="availability"]//text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY) VERFÜGBARKEIT ITY = ``.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" Empfänger = Empfänger-E-Mail-ID body_of_email = ans email_subject = Produkt + `Produktverfügbarkeit ` # SMTP-Sitzung erstellen s = smtplib.SMTP(`smtp.gmail.com`, 587) # TLS für Sicherheit starten s.starttls() # Authentifizierung s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # zu sendende Nachricht headers = " " .join(["from: " + GMAIL_USERNAME, "subject: " + email_subject, "to: " + receiver, "mime-version: 1.0", "content-type: text/html"]) content = headers + " " + body_of_email s.sendmail(GMAIL_USERNAME, Empfänger, Inhalt) s.quit() def ReadAsin(): # Asin Id ist die Produkt-ID, # die vom Benutzer bereitgestellt werden muss Asin = `B077PWK5BT` url = "http:// www.amazon.in/dp/" + Asin print ("Verarbeitung: "+url) ans = check(url) arr = [ `Nur noch 1 auf Lager.`, `Nur noch 2 auf Lager.`, `Auf Lager .`] print(ans) if ans in arr: # s Beenden der E-Mail an den Benutzer, wenn # falls das Produkt verfügbar ist sendemail(ans, Asin) # Planen des gleichen Codes, um # mehrmals nach jeder Minute ausgeführt zu werden def job(): print("Tracking....") ReadAsin() schedule.every (1).minutes.do(job) while True: # führt alle ausstehenden Aufgaben/Jobs aus schedule.run_pending() time.sleep(1) 

Ausgabe:

Tracking.. .. Verarbeitung: http://www.amazon.in/dp/B077PWK5BT Nur noch 1 Stück auf Lager. Tracking.... Verarbeitung: http://www.amazon.in/dp/B077PWK5BT Nur noch 1 auf Lager. Tracking.... Verarbeitung: http://www.amazon.in/dp/B077PWK5BT Nur noch 1 auf Lager. 

Wie erstelle ich eine Bestandsverfügbarkeitsprüfung mit Python-Anfragen, wenn JavaScript verwendet wird?

StackOverflow-Frage

Ich habe einen Code geschrieben, der prüfen soll, ob ein Produkt wieder auf Lager ist, und wenn dies der Fall ist, senden Sie mir eine E-Mail, um mich zu benachrichtigen. Dies funktioniert, wenn die Dinge, nach denen ich suche, im HTML-Code enthalten sind.

Manchmal werden jedoch bestimmte Objekte über JavaScript geladen. Wie könnte ich meinen Code so bearbeiten, dass das Web Scraping auch mit JavaScript funktioniert?

Das ist mein bisheriger Code:

import time import fordert while True: # URL der IKEA-Seite abrufen url = `https://www.ikea.com/nl/nl/p/flintan-bureaustoel-vissle-zwart-20336841/` # Holen Sie sich den Text von dieser Seite und geben Sie alles in Kleinbuchstaben ein wenn das Produkt nicht verfügbar ist outofstockstrings = [`niet beschikbaar voor levering`, `alleen beschikbaar in de winkel `] # Prüfe ob die Strings sind im Text der Webseite wenn irgendwelche(x in Produktseite für x in outofstockstrings): time.sleep(1800) weiter sonst: # sende mir eine E-Mail und unterbreche die Schleife 

Antwort:

Anstatt den HTML-Code zu durchsuchen und zu analysieren, könntest du den inoffiziellen Bestand verwenden API, die auch die IKEA-Website verwendet. Diese API gibt JSON-Daten zurück, die viel einfacher zu analysieren sind, und Sie erhalten auch Schätzungen, wenn das Produkt wieder auf Lager ist.

Es gibt sogar ein in Javascript / node geschriebenes Projekt, das Ihnen diese Art von Informationen liefert direkt von der Kommandozeile: https://github.com/Ephigenia/ikea-availability-checker< /a>

Sie können den Lagerbestand des Stuhls in allen Geschäften in den Niederlanden ganz einfach überprüfen:

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