Проверка доступности продуктов Amazon с использованием Python
Как мы знаем, Python - это многоцелевой язык, широко используемый для написания сценариев. Его использование не ограничивается только решением сложных вычислений, но и автоматизацией повседневных задач. Допустим, мы хотим отслеживать доступность любого продукта Amazon и заключать сделку, когда доступность продукта изменяется, и информировать пользователя о наличии по электронной почте. Будет очень весело написать для этого сценарий Python.
Примечание. Перед запуском скрипта установите необходимые библиотеки (согласно коду). Также обратите внимание, что если продукт в настоящее время недоступен, электронное письмо не будет отправлено пользователю. Asin Id должен быть предоставлен пользователем для продукта, который он хочет отслеживать.
Working of each module used:
-> requests: Used to make HTTP get and post requests
-> time: Used to find current time, wait, sleep
-> schedule: Used to schedule a function to run again after intervals. It is similiar to “setInterval” functionality in JavaScript.
-> smptlib: Used to send email using Python.
Ниже представлена реализация указанного выше проекта:
# Python script for Amazon product availability checker # importing libraries from lxml import html import requests from time import sleep import time import schedule import smtplib # Email id for who want to check availability 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" } # adding headers to show that you are # a browser who is sending GET request page = requests.get(url, headers = headers) for i in range ( 20 ): # because continuous checks in # milliseconds or few seconds # blocks your request sleep( 3 ) # parsing the html content doc = html.fromstring(page.content) # checking availaility 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" # creates SMTP session s = smtplib.SMTP( "smtp.gmail.com" , 587 ) # start TLS for security s.starttls() # Authentication s.login(GMAIL_USERNAME, GMAIL_PASSWORD) # message to be sent headers = "
" .join([ "from: " + GMAIL_USERNAME, "subject: " + email_subject, "to: " + recipient, "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 is the product Id which # needs to be provided by the user Asin = "B077PWK5BT" print ( "Processing: " + url) ans = check(url) arr = [ "Only 1 left in stock." , "Only 2 left in stock." , "In stock." ] print (ans) if ans in arr: # sending email to user if # in case product available sendemail(ans, Asin) # scheduling same code to run multiple # times after every 1 minute def job(): print ( "Tracking...." ) ReadAsin() schedule.every( 1 ).minutes.do(job) while True : # running all pending tasks/jobs schedule.run_pending() time.sleep( 1 ) |
Выход:
Отслеживание .... Обработка: http://www.amazon.in/dp/B077PWK5BT Остался только 1 на складе. Отслеживание .... Обработка: http://www.amazon.in/dp/B077PWK5BT Остался только 1 на складе. Отслеживание .... Обработка: http://www.amazon.in/dp/B077PWK5BT Остался только 1 на складе.
Обратите внимание, что программа может выдать ошибку (критическое предупреждение безопасности / попытка входа в систему была заблокирована) при отправке почты пользователю, что можно обработать, изменив настройки безопасности в почтовом приложении, которое вы используете.
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.