Amazon Product Availability Checker mit Python
Wie wir wissen, ist Python eine Mehrzwecksprache und wird häufig für Skripte verwendet. Seine Verwendung beschränkt sich nicht nur auf die Lösung komplexer Berechnungen, sondern auch auf die Automatisierung der täglichen Lebensaufgabe. Angenommen, wir möchten die Verfügbarkeit von Amazon-Produkten verfolgen und das Angebot abschließen, wenn sich die Produktverfügbarkeit ändert, und den Benutzer per E-Mail über die Verfügbarkeit informieren. Es wird ein großer Spaß sein, ein Python-Skript dafür zu schreiben.
Hinweis: Installieren Sie die erforderlichen Bibliotheken (gemäß Code), bevor Sie das Skript ausführen. Beachten Sie außerdem, dass keine E-Mail an den Benutzer gesendet wird, wenn das Produkt derzeit nicht verfügbar ist. Asin Id sollte er durch den Benutzer für das Produkt zur Verfügung gestellt werden will , den Überblick behalten.
Arbeitsweise jedes verwendeten Moduls:
-> Anfragen: Wird verwendet, um HTTP-Anfragen abzurufen und zu senden.
-> Zeit: Wird verwendet, um die aktuelle Zeit zu ermitteln, zu warten und zu schlafen
-> Zeitplan: Dient zum Planen einer Funktion, die nach Intervallen erneut ausgeführt werden soll. Dies ähnelt der Funktion "setInterval" in JavaScript.
-> smptlib: Wird zum Senden von E-Mails mit Python verwendet.
Unten ist die Implementierung des obigen Projekts:
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
(
"Processing: "
+
url)
ans
=
check(url)
arr
=
[
'Only 1 left in stock.'
,
'Only 2 left in stock.'
,
'In stock.'
]
(ans)
if
ans
in
arr:
sendemail(ans, Asin)
def
job():
(
"Tracking...."
)
ReadAsin()
schedule.every(
1
).minutes.do(job)
while
True
:
schedule.run_pending()
time.sleep(
1
)
Ausgabe:
Verfolgung.... Verarbeitung: http://www.amazon.in/dp/B077PWK5BT Nur noch 1 auf Lager. Verfolgung.... Verarbeitung: http://www.amazon.in/dp/B077PWK5BT Nur noch 1 auf Lager. Verfolgung.... Verarbeitung: http://www.amazon.in/dp/B077PWK5BT Nur noch 1 auf Lager.
Beachten Sie, dass das Programm beim Senden der E-Mail an den Benutzer möglicherweise einen Fehler auslöst (Kritische Sicherheitswarnung / Anmeldeversuch wurde blockiert). Dies kann durch Ändern der Sicherheitseinstellung in der von Ihnen verwendeten E-Mail-Anwendung behoben werden.