Sprawdzanie dostępności produktów Amazon za pomocą Pythona

| | | | | |

Jak wiemy, Python to uniwersalny język szeroko używany do tworzenia skryptów. Jego zastosowanie nie ogranicza się tylko do rozwiązywania skomplikowanych obliczeń, ale także do automatyzacji codziennych zadań. Załóżmy, że chcemy śledzić dostępność dowolnego produktu Amazon i sfinalizować transakcję, gdy dostępność produktu ulegnie zmianie, a także poinformować użytkownika o dostępności pocztą elektroniczną. Napisanie do tego skryptu w Pythonie będzie świetną zabawą. Notatka. Zainstaluj wymagane biblioteki (zgodnie z kodem) przed uruchomieniem skryptu. Należy również pamiętać, że jeśli produkt nie jest obecnie dostępny, do użytkownika nie zostanie wysłana żadna wiadomość e-mail. Identyfikator Asin musi być podany przez użytkownika dla produktu, który chce śledzić.

Działanie każdego używanego modułu: żądania
  • ->: używane do pobierania i wysyłania HTTP żądania
  • -> czas: używany do znajdowania aktualnego czasu, oczekiwania, snu
  • -> harmonogram: używany do planowania ponownego uruchomienia funkcji po interwałach. Jest podobny do funkcji „setInterval” w JavaScript.
  • -> smptlib: Służy do wysyłania wiadomości e-mail za pomocą Pythona.

# Skrypt Pythona do sprawdzania dostępności produktu Amazon # importowanie bibliotek z lxml import html import żądań od czasu import uśpienia import czasu import harmonogramu import smtplib # Identyfikator e-mail dla tych, którzy chcą sprawdzić dostępność 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`} # dodanie nagłówków, aby pokazać, że jesteś # przeglądarką wysyłającą żądanie GET page = requests.get(url, headers = headers) for i in range(20): # ponieważ ciągłe sprawdzanie w # milisekundach lub kilku sekundach # blokuje twoje żądanie sleep(3) # parsowanie treści html doc = html.fromstring(page .treść) # sprawdzanie dostępności XPATH_AVAILABILITY = `//div[@id ="availability"]//text()` RAw_AVAILABILITY = doc.xpath(XPATH_AVAILABILITY) AVAILABIL ITY = ``.join(RAw_AVAILABILITY).strip() if RAw_AVAILABILITY jeszcze Brak return AVAILABILITY def sendemail(ans, product): GMAIL_USERNAME = "YOUR_GMAIL_ID" GMAIL_PASSWORD = "YOUR_GMAIL_PASSWORD" odbiorca = adres e-mail odbiorcy_email_id = body_of produkt ` # tworzy sesję SMTP s = smtplib.SMTP(`smtp.gmail.com`, 587) # start TLS dla bezpieczeństwa s.starttls() # Uwierzytelnianie s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # wiadomość do wysłania headers = " " .join(["from: " + GMAIL_USERNAME, "subject: " + email_subject, "to: " + odbiorca, "mime-version: 1.0", "content-type: text/html"]) content = headers + " " + body_of_email s.sendmail(GMAIL_USERNAME, odbiorca, treść) s.quit() def ReadAsin(): # Asin Id to identyfikator produktu, który # musi być dostarczony przez użytkownika Asin = `B077PWK5BT` url = "http:// www.amazon.in/dp/" + Asin print ("Przetwarzanie: "+url) ans = check(url) arr = [ `Tylko 1 w magazynie.`, `Tylko 2 w magazynie.`, `W magazynie .`] print(ans) if ans in arr: # s ending email to user if # w przypadku dostępności produktu sendemail(ans, Asin) # planowanie tego samego kodu do wielokrotnego uruchamiania # razy co 1 minutę def job(): print("Tracking....") ReadAsin() schedule.every (1).minutes.do(job) while True: # uruchamianie wszystkich oczekujących zadań/zadań schedule.run_pending() time.sleep(1) 

Wyjście:

Śledzenie.. .. Przetwarzanie: http://www.amazon.in/dp/B077PWK5BT Tylko 1 w magazynie. Śledzenie.... Przetwarzanie: http://www.amazon.in/dp/B077PWK5BT Tylko 1 w magazynie. Śledzenie.... Przetwarzanie: http://www.amazon.in/dp/B077PWK5BT Tylko 1 w magazynie. 

Jak utworzyć narzędzie do sprawdzania dostępności zapasów za pomocą żądań Pythona, jeśli używany jest JavaScript?

Pytanie StackOverflow

Napisałem kod, który powinien sprawdzić, czy produkt jest z powrotem w magazynie, a kiedy będzie, wyślij mi wiadomość e-mail, aby mnie powiadomić. Działa to, gdy rzeczy, których szukam, znajdują się w html.

Jednak czasami niektóre obiekty są ładowane przez JavaScript. Jak mogę edytować mój kod, aby web scraping działał również z JavaScriptem?

To jest mój dotychczasowy kod:

import czas import żądania gdy Prawda: # Uzyskaj adres URL strony IKEA url = `https://www.ikea.com/nl/nl/p/flintan-bureaustoel-vissle-zwart-20336841/` # Pobierz tekst z tej strony i umieść wszystko małymi literami productpage = requests.get(url).text.lower() # Ustaw ciągi, które powinny znajdować się na stronie jeśli produkt nie jest dostępny outofstockstrings = [`niet beschikbaar voor levering`, `alleen beschikbaar in de winkel `] # Sprawdź, czy ciągi są w tekście strony internetowej jeśli dowolne(x na stronie produktu dla x na outofstockstrings): time.sleep(1800) kontynuuj inne: # wyślij mi e-mail i przerwij pętlę 

Odpowiedź:

Zamiast skrobania i analizowania HTML możesz użyć nieoficjalnego stocka API, z którego korzysta również witryna IKEA. Ten interfejs API zwraca dane JSON, które są o wiele łatwiejsze do analizy, a także otrzymasz szacunki, gdy produkt wróci do magazynu.

Istnieje nawet projekt napisany w javascript / node, który zapewnia tego rodzaju informacje prosto z wiersza poleceń: https://github.com/Ephigenia/ikea-availability-checker< /a>

Możesz łatwo sprawdzić stan magazynowy krzesła we wszystkich sklepach w Holandii:

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