当前位置:
首页 > temp > python入门教程 >
-
使用 Python 的亚马逊产品可用性检查器
使用 Python 的亚马逊产品可用性检查器
原文:https://www . geesforgeks . org/Amazon-product-availability-checker-use-python/
众所周知,Python 是一种多用途语言,广泛用于脚本编写。它的用途不仅仅局限于解决复杂的计算,还包括日常生活任务的自动化。假设我们想跟踪任何亚马逊产品可用性并在产品可用性发生变化时抓住交易,并通过电子邮件通知用户可用性。为此编写一个 Python 脚本将会非常有趣。 注意:运行脚本前安装所需的库(按照代码)。此外,请注意,如果产品目前不可用,则不会向用户发送电子邮件。 Asin Id 应该由用户为他想要跟踪的产品提供。
所用各模块的工作: - >请求:用于发出 HTTP get 和 post 请求 - >时间:用于查找当前时间,等待,休眠 - >调度:用于调度某个功能在间隔后再次运行。它类似于 JavaScript 中的“setInterval”功能。 - > smptlib: 用于使用 Python 发送邮件。
以下是上述项目的实施:
Python 3
# 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 availability
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 = "\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 Id is the product Id which
# needs to be provided by the user
Asin = 'B077PWK5BT'
url = "http://www.amazon.in/dp/" + Asin
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)
输出:
Tracking....
Processing: http://www.amazon.in/dp/B077PWK5BT
Only 1 left in stock.
Tracking....
Processing: http://www.amazon.in/dp/B077PWK5BT
Only 1 left in stock.
Tracking....
Processing: http://www.amazon.in/dp/B077PWK5BT
Only 1 left in stock.
请注意,该程序在向用户发送邮件时可能会引发错误(严重安全警报/登录尝试被阻止),这可以通过修改您正在使用的邮件应用程序中的安全设置来处理。
版权属于:月萌API www.moonapi.com,转载请注明出处
本文链接:https://www.moonapi.com/news/184.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数