如果您经常在沃尔玛购物,您可能会想知道某件商品何时会打折或有特价。每天手动检查价格可能会很麻烦,但如果利用一些技术来创建一个沃尔玛价格跟踪器,您就可以自动监控价格变化,并在价格下降时收到通知。
本指南将一步步指导您创建自己的沃尔玛价格跟踪器--从数据采集和存储到价格监控和自动提醒。即使您是编程新手,也能轻松上手!
沃尔玛价格跟踪器能做什么?
假设您打算从沃尔玛购买一台新电视机,但不确定现在是否是最佳购买时机。每天手动查看价格非常耗时。这时,价格跟踪工具就派上用场了。
-
全天候自动监控产品价格。
-
记录历史价格趋势。
-
当价格下降时,立即通过电子邮件或短信通知您。
开始追踪所需的物品
在开始之前,请确保准备好以下工具:
-
Python (建议使用 3.8 或更高版本) - 用于编写和运行脚本
-
代码编辑器 (VS Code 或 PyCharm) - 让编码更简单、更高效
-
沃尔玛开发者账户 (可选)--使用官方应用程序接口更稳定
-
代理 IP (可选)--有助于避免在频繁请求时被阻止
安装所需的 Python 库
打开终端或命令提示符,运行以下命令
pip install requests beautifulsoup4 selenium pandas schedule smtplib
如果您计划使用浏览器自动化,还需要安装 ChromeDriver
或 geckodriver
取决于您的浏览器。
如何获取沃尔玛产品价格
方法 1: 沃尔玛官方 API(推荐使用)
沃尔玛提供开发人员应用程序接口,让您可以直接获取产品数据。
第 1 步:获取 API 密钥
访问沃尔玛开发人员门户网站。

创建账户并申请 API 密钥(审批可能需要一些时间)。
步骤 2:使用 Python 获取价格
进口请求
api_key = "your_scraperapi_key" PRODUCT_URL = "" # 替换为您的产品 URL
PRODUCT_URL = "https://www.walmart.com/ip/123456789" # 替换为您的产品 URL
def get_price():
response = requests.get(
f "http://api.scraperapi.com?api_key={API_KEY}&url={PRODUCT_URL}"
)
# 从 HTML 中提取价格(简化示例)
返回 "29.99" # 替换为实际解析逻辑
price = get_price()
print(f "Current price: ${price}")
虽然这种方式合法,而且不太可能被屏蔽,但它需要 API 访问权限,而且可能有速率限制。
方法 2:使用网络爬虫抓取(替代方法)
如果不想使用应用程序接口,可以使用以下工具 硒
或 美丽汤
直接从产品页面获取价格。
示例:使用 Selenium 自动提取产品页面的价格
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 设置无头浏览器(运行时不打开窗口)
options = Options()
options.add_argument("--headless")
驱动程序 = webdriver.Chrome(options=options)
product_url = "https://www.walmart.com/ip/123456789" # 替换为产品 URL
driver.get(product_url)
# 查找价格元素(可能需要调整 XPath)
price_element = driver.find_element("xpath", '//span[@itemprop="price"]')
price = price_element.text
print(f "Current price: {price}")
driver.quit() # 关闭浏览器
沃尔玛有反窃听保护措施,频繁请求可能会导致您的 IP 被屏蔽。这样,添加 time.sleep(5)
为确保可靠性,建议使用轮换代理 IP。
沃尔玛刮擦检测旁路 [可选]
单个 IP 地址的建议请求频率为 每分钟不超过 1 次 而不会触发反僵尸保护。因此,在频繁访问和搜索沃尔玛网页时,使用提供以下功能的代理服务器 清除IP 定期更改 UA 对于避免被标记和 IP 禁止至关重要。以下是管理和优化沃尔玛价格跟踪器设置的方法。
(1) 代理池管理
由于您的 IP 地址可能会因为过多的搜刮请求而被暂时屏蔽,从而导致 403 Forbidden 错误,而且沃尔玛的产品价格可能会因地区而异,例如,美国和加拿大用户可能会看到同一商品的不同价格,因此需要一个拥有数百万 IP 的庞大代理池来进行轮换。
OkeyProxy 令人印象深刻的网络 拥有 1.5 亿多个真实 IP,覆盖 200 多个国家/地区。支持所有设备和用例,包括自动 IP 轮换,用于搜刮和跟踪数据。该代理服务的价格极具竞争力,是住宅代理搜刮器的首选。它提供 $3/GB 代理试用版,让每个用户都能体验代理搜刮的可靠性、速度和多功能性。
# 代理池 - 替换为您自己的代理 IP
PROXY_POOL = [
"http://45.123.123.123:8080",
"http://67.234.234.234:8888",
"http://89.111.222.333:3128"
]
# 从代理池中随机选择并验证一个代理
def rotate_proxy():
while True:
proxy = random.choice(PROXY_POOL)
if check_proxy(proxy):
返回代理
else:
print(f "Proxy {proxy} is not available, trying another...")
PROXY_POOL.remove(proxy)
raise Exception("池中已无有效代理")。
# 通过测试请求检查代理是否正常工作
def check_proxy(proxy):
try:
test_url = "https://httpbin.org/ip"
response = requests.get(test_url, proxies={"http": proxy}, timeout=5)
return response.status_code == 200
例外:
return False
(2) 反僵尸策略
随机化请求头
为避免被检测为僵尸,请在每次请求时轮换您的 User-Agent:
from fake_useragent import UserAgent
ua = UserAgent()
headers = {"User-Agent": ua.random}
在请求之间添加随机延迟
在请求之间引入延迟有助于模仿人类行为:
导入时间
导入随机
time.sleep(random.uniform(3, 10)) # 在下一次请求前等待 3-10 秒
这些策略有助于降低被拦截的风险,并随着时间的推移提高刮板的可靠性。
保存沃尔玛商品价格历史记录
获取价格后,重要的是将其存储起来,这样您就可以跟踪一段时间内的历史趋势。
方法 1:在 SQLite 数据库中存储数据
导入 sqlite3
从 datetime 导入 datetime
# 创建或连接数据库
conn = sqlite3.connect("walmart_prices.db")
cursor = conn.cursor()
# 创建一个不存在的表
cursor.execute('''
CREATE TABLE IF NOT EXISTS prices (
product_id TEXT、
价格 REAL、
日期文本
)
''')
# 插入新的价格数据
cursor.execute("INSERT INTO prices VALUES (?, ?, ?)"、
(product_id, price, datetime.now())
conn.commit()
conn.close()
搜索沃尔玛网站后将数据存储在本地 SQLite 数据库中,该数据库轻量级,可自动创建文件,无需安装其他软件。
方法 2:在 CSV 文件中存储数据(更简单)
import pandas as pd
从 datetime 导入 datetime
data = {
"product_id":[product_id]、
价格[价格]、
"日期": [date[datetime.now()]。
}
df = pd.DataFrame(data)
df.to_csv("prices.csv", mode="a", header=False) # 追加模式
这两种方法都很有效--使用数据库进行更高级的查询,或使用 CSV 进行简单查询。
沃尔玛价格跟踪每日提醒
1.按特定路线查询沃尔玛价格
使用 时间表
库,每天在特定时间自动运行价格检查脚本:
导入时间表
导入时间
def check_price():
# 在此处输入刮擦和价格检查代码
print("Checking price...")
# 每天上午 9:00 运行任务
schedule.every().day.at("09:00").do(check_price)
while True:
schedule.run_pending()
time.sleep(60) # 每分钟检查一次计划任务
2.降价时发送电子邮件通知
导入 smtplib
从 email.mime.text 导入 MIMEText
def send_email(price):
发送方 = "[email protected]"
接收者 = "[email protected]"
password = "your_email_password_or_app_password"
msg = MIMEText(f "The product price has dropped! Latest price: ${price}")
msg["Subject"] = "沃尔玛价格警报"
msg["From"] = 发件人
msg["To"] = 接收者
使用 smtplib.SMTP("smtp.gmail.com", 587) 作为服务器:
server.starttls()
server.login(sender, password)
server.sendmail(sender, receiver, msg.as_string())
然后,在您的 check_price()
函数,当价格低于目标值时触发警报:
if price = 100: # 设置所需的价格阈值
send_email(price)
沃尔玛价格跟踪器部署到云端
如果您希望沃尔玛价格跟踪器持续运行或在预定时间运行,可以使用以下选项之一将脚本部署到云中:
-
GitHub 操作 - 免费,非常适合每天运行一次脚本
-
云服务器 (AWS、Azure 等) - 实时监控的理想选择
-
PythonAnywhere - 适合初学者,但免费版本有一些限制
下面是一个在沃尔玛价格跟踪后将刮擦工具上传到 Github 的例子,这是比较常见的。
在 GitHub 中安排沃尔玛价格跟踪器
首先,创建一个 GitHub 存储库.
然后添加 .github/workflows/tracker.yml
:
名称: 沃尔玛价格跟踪器
上:
时间表:
- cron: "0 14 * * *" # 2 PM UTC(根据您所在的时区进行调整)
jobs:
run-tracker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name:运行跟踪器
运行: python tracker.py
跟踪沃尔玛商品价格的附加功能
1.监控和抓取多个沃尔玛 Itens 的数据
您可以将多个产品存储在一个列表中并循环查看,从而轻松跟踪多个产品:
product_list = [
{"id":"123456789", "name":"无线耳塞","阈值":50},
{"id":"987654321", "名称":"智能手表","阈值": 200}200}
]
def monitor_multiple_products():
for PRODUCT_LIST 中的产品
price = get_price(product["id"])
if price = product["threshold"]:
send_email(f"{product['name']} just dropped to ${price}!")
这样,你就能为你正在关注的每件商品收到单独的警报,在大型促销活动期间超级方便!
2.从保存的跟踪数据中直观了解价格趋势
想分析价格随时间的变化?如果您将价格数据存储在 CSV 或 SQLite 数据库中,只需使用 大熊猫
和 matplotlib
:
import pandas as pd
import matplotlib.pyplot as plt
导入 sqlite3
def plot_price_history():
# 从 SQLite 数据库加载数据(或使用 pd.read_csv 加载 CSV 文件)
conn = sqlite3.connect('walmart_prices.db')
df = pd.read_sql_query("SELECT * FROM prices", conn)
conn.close()
# 将日期列转换为日期时间格式
df['date'] = pd.to_datetime(df['date'])
# 可选:过滤特定产品
product_id = "123456789"
product_df = df[df['product_id'] == product_id]
# 绘图
plt.figure(figsize=(10, 5))
plt.plot(product_df['date'], product_df['price'], marker='o', linestyle='-')
plt.title(f "Product {product_id} 的价格趋势")
plt.xlabel("Date")
plt.ylabel("Price (USD)")
plt.grid(True)
plt.xticks(rotation=45)
plt.tight_layout()
plt.savefig("price_history.png")
plt.show()
您可以安排该功能每周运行一次,并自动将图表发送到您的收件箱!
3.建立沃尔玛价格跟踪器的网络控制面板
您可以使用以下方法创建一个简单的沃尔玛价格跟踪面板 烧瓶
或 流光溢彩
在网络界面显示产品价格和趋势。
例如,Flask 提供 HTML 模板,您可以在其中显示当前价格、历史趋势(图片或图表)等。下面是一个基本示例,供您参考:
from flask import Flask, render_template
将 pandas 导入 pd
导入 sqlite3
app = Flask(__name__)
@app.route("/")
def index():
conn = sqlite3.connect("walmart_prices.db")
df = pd.read_sql_query("SELECT * FROM prices", conn)
conn.close()
latest_prices = df.sort_values("date").groupby("product_id").last().reset_index()
return render_template("index.html", data=latest_prices.to_dict(orient="records"))
然后,创建一个简单的 HTML 模板(templates/index.html)来显示产品价格。

常见问题(FAQ)
问题 1: 为什么我的刮擦器会被阻止?
您在短时间内发送了太多请求。使用 精英代理 轮换 IP 地址,并在每次请求之间添加随机延迟,以避免达到速率限制:
time.sleep(random.randint(2, 5)) # 下次请求前等待 2-5 秒
问题 2: 如何查找产品 ID?
转到沃尔玛产品页面 - URL 中 /ip/ 后面的数字就是产品 ID。例如
https://www.walmart.com/ip/123456789 → 产品编号为 123456789
问题 3:我可以同时跟踪多个产品吗?
可以!只需创建一个产品 ID 列表并在其中循环即可:
product_list = ["123", "456", "789"]
for product_id in product_list:
price = get_price(product_id)
save_price(product_id, price)
您还可以扩展此功能,在每种产品降价时为其发送单独的警报。
总结
就是这样!您现在拥有了一个全自动的沃尔玛价格跟踪器,它可以全天候监控价格,并在价格下跌时立即通知您。
如果您大规模部署了 walmart.com 价格跟踪器,请务必遵守沃尔玛的 robots.txt 指南 (在此查看规则)和 轮换代理 IP 因此。
有了您定制的沃尔玛价格跟踪器,您可以在睡觉时查看价格,再也不会错过任何优惠!