Проверка доступности продуктов 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 librariesfrom lxml import htmlimport requestsfrom time import sleepimport timeimport scheduleimport smtplib # Email id for who want to check availabilityreceiver_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. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.