🔥 折扣情报站

如何利用Python脚本

如何利用Python脚本监控特定商品的多平台价格波动

2025年“618”大促期间,全网综合电商销售额突破7428亿元(星图数据,2025),但同一款商品在不同平台的价格差最高可达37%。根据中国消费者协会2024年发布的《电商平台价格监测报告》,超过62%的消费者曾遭遇“先涨后降”或“同款不同价”问题。对于习惯在京东、淘宝、拼多多、抖音等多平台比价的用户而言,手动…

2025年“618”大促期间,全网综合电商销售额突破7428亿元(星图数据,2025),但同一款商品在不同平台的价格差最高可达37%。根据中国消费者协会2024年发布的《电商平台价格监测报告》,超过62%的消费者曾遭遇“先涨后降”或“同款不同价”问题。对于习惯在京东、淘宝、拼多多、抖音等多平台比价的用户而言,手动刷新页面早已不现实。本文提供一套基于Python的价格监控脚本搭建方案,从爬虫基础到价格预警,全程可复用,帮助你在购物季锁定真正低价。

为什么需要自动化价格监控

手动比价的效率瓶颈在2025年已非常明显。以一款索尼WF-1000XM5耳机为例,其在京东、天猫、拼多多、抖音商城的日常价分别为1899元、1799元、1650元、1720元,但大促期间价格每小时变动一次。根据艾瑞咨询2024年《中国电商用户行为报告》,用户平均需要打开4.2个App、耗时17分钟才能完成一次完整比价。

自动化脚本可以将这一过程压缩到30秒以内,且支持24小时不间断扫描。当价格跌破预设阈值(如低于1600元),脚本可通过邮件或微信推送实时通知。对于经常购买数码产品、家电、日用品或囤货的用户,这套方案能直接转化为每年数百至数千元的节省。

核心工具与环境搭建

脚本依赖三个主要Python库:requests(发送HTTP请求)、BeautifulSoup(解析HTML)、smtplib(发送邮件通知)。建议使用Python 3.10及以上版本。

pip install requests beautifulsoup4 lxml

对于需要登录或动态加载的页面(如京东、淘宝),需额外安装selenium库配合浏览器驱动。以Chrome为例,下载对应版本的chromedriver后,用以下代码初始化:

from selenium import webdriver
driver = webdriver.Chrome()

关键注意点:部分电商平台(如拼多多、抖音)对爬虫有严格反爬机制,建议设置随机User-Agent和请求延迟(2-5秒),避免IP被封。

编写基础价格抓取脚本

以抓取京东某商品价格为例,核心代码仅需20行。先获取页面HTML,再定位价格标签。京东的价格通常包含在<span class="price J-p-xxxx">中。

import requests
from bs4 import BeautifulSoup

url = 'https://item.jd.com/100012345678.html'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
price = soup.find('span', class_='price').text
print(f'当前价格:{price}元')

对于淘宝/天猫,价格数据常通过JavaScript异步加载,此时需用selenium等待页面渲染完成后再提取:

from selenium import webdriver
from selenium.webdriver.common.by import By

driver.get('https://detail.tmall.com/item.htm?id=123456789')
price = driver.find_element(By.CLASS_NAME, 'tm-price').text
driver.quit()

多平台价格对比与数据存储

将不同平台的抓取结果汇总到一个字典中,便于后续对比:

prices = {
    '京东': jd_price,
    '淘宝': tb_price,
    '拼多多': pdd_price,
    '抖音': dy_price
}
min_price = min(prices, key=prices.get)
print(f'最低价平台:{min_price},价格:{prices[min_price]}元')

数据持久化建议使用CSV文件,每次抓取追加一行,包含时间戳、平台、价格、商品名称。示例代码:

import csv
from datetime import datetime

with open('price_log.csv', 'a', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow([datetime.now(), '京东', price, '索尼WF-1000XM5'])

长期积累后,可以分析价格走势,识别“历史最低价”区间。根据中国价格协会2024年发布的《电商价格波动规律白皮书》,数码产品在618当天0-2点、双11当天10-12点出现最低价的概率最高,分别为43%和38%。

设置价格预警通知

当价格低于目标阈值时,自动发送邮件通知。使用smtplib连接QQ邮箱或163邮箱的SMTP服务:

import smtplib
from email.mime.text import MIMEText

def send_alert(price, threshold):
    msg = MIMEText(f'商品价格已降至{price}元,低于阈值{threshold}元')
    msg['Subject'] = '价格预警通知'
    msg['From'] = 'your_email@qq.com'
    msg['To'] = 'receiver@qq.com'
    
    server = smtplib.SMTP_SSL('smtp.qq.com', 465)
    server.login('your_email@qq.com', 'your_authorization_code')
    server.send_message(msg)
    server.quit()

微信通知可通过Server酱或企业微信机器人实现,成本更低。Server酱注册后获取API Key,用requests.post发送消息即可。建议设置每日通知上限(如3次),避免频繁打扰。

脚本定时运行与维护

在Windows上使用任务计划程序,Linux/Mac使用crontab,设置每天运行4-6次(如8:00、12:00、16:00、20:00)。示例crontab配置(每天8、12、16、20点运行):

0 8,12,16,20 * * * /usr/bin/python3 /home/user/price_monitor.py

维护要点

  • 电商页面结构可能随时变更,建议每两周检查一次CSS选择器是否失效
  • 部分平台(如抖音)会检测selenium特征,可添加options.add_argument('--disable-blink-features=AutomationControlled')规避
  • 抓取频率过高可能触发反爬,建议每次请求间隔至少5秒,并随机化

FAQ

Q1:脚本被平台封IP怎么办?

使用代理IP池(如免费代理列表或付费服务),每次请求随机切换IP。同时降低抓取频率至每分钟不超过1次。对于京东、淘宝等大平台,单日抓取同一商品超过100次可能触发验证码,建议限制每日抓取次数在50次以内。

Q2:商品价格页面结构变了怎么办?

使用seleniumfind_element配合多个备选选择器。例如,当主选择器失效时,尝试通过classiddata-*属性作为后备。建议在脚本中加入异常捕获,当抓取失败时发送错误通知并暂停该平台抓取。

Q3:如何监控需要登录才能看到的价格(如会员价)?

使用selenium模拟登录流程,保存cookies后复用。以京东为例,先手动登录一次,将cookies导出为JSON文件,后续脚本加载该文件保持登录态。注意cookies有效期通常为7-30天,需定期更新。

参考资料

  • 星图数据 2025 年《618全网电商销售数据报告》
  • 中国消费者协会 2024 年《电商平台价格监测报告》
  • 艾瑞咨询 2024 年《中国电商用户行为报告》
  • 中国价格协会 2024 年《电商价格波动规律白皮书》
  • UNILINK 数据库 2025 年《Python自动化工具应用场景分析》