欢迎光临
我们一直在努力

Python 京东商品价格监控脚本|降价自动微信推送,还能进行实时热搜监控!

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}

一、前言

哈喽各位小伙伴,我又来了!平时总喜欢折腾一些小脚本解决生活里的麻烦事,最近想蹲京东外设好价,隔一会儿就得手动点开页面刷新,反复刷真的很耗精力,好几次错过了低价,后悔莫及!

于是花了两天调试,搞定了这个自用监控脚本!核心功能很简单:定时自动访问商品页面,价格低于你设置的目标价,直接推送消息到微信,不用自己蹲守刷新。

而且这套思路不止能盯商品价格!只要是 JS 动态渲染的网页,稍微改几行代码,就能做成热搜监控、官网公告监控、库存监控,网页内容一发生变化就给你发提醒。下面保姆级手把手教学,零基础也能顺利跑通。

二、先唠明白:为什么不用 requests,选 DrissionPage?

很多新手入门爬虫最先接触 requests,我最早也是先用它踩坑的。最开始直接用 requests 请求京东商品链接,拿到源码之后傻眼,根本找不到价格数字,脚本直接报找不到元素。

这里把两者的适用场景给大家讲清楚: ✅ requests:适合静态网页 网页内容直接写死在 HTML 源码中,发起请求就能拿到文本、数据。简单新闻页、静态文档页面用它,速度快、依赖轻。

❌ 京东这类页面,requests 会直接翻车 京东的价格是 JS 动态渲染出来的,浏览器打开页面之后,再通过 JS 接口加载价格、库存信息。requests 只会获取原始 HTML 源码,不会执行 JS,源码里自然提取不到价格。

✅ DrissionPage:浏览器自动化,专治动态网页 它会拉起浏览器内核,和我们手动打开 Chrome 浏览页面逻辑一样,等待页面加载完成、JS 全部执行渲染完毕,再去提取标题、价格。 相比 requests 会稍微重一点点,但是对于咱们这种自用监控脚本,完全可以接受,开发调试省心很多。

一句话总结:静态网页抓数据优先 requests;需要等待 JS 加载、数据动态刷新的网页监控,优先选择 DrissionPage。

在这里插入图片描述

三、环境准备,安装依赖

一共需要安装两个包,打开 CMD 或者 PyCharm 终端,依次执行下面两行安装命令:

pip install DrissionPage
pip install serverchan-sdk

在这里插入图片描述

Server 酱是什么?

Server 酱是一个非常适合新手的微信推送工具,不用折腾公众号、企业微信复杂配置。 官网:https://sct.ftqq.com 注册登录,绑定个人微信之后,就能拿到一串 sendkey。

⚠️【重要安全提醒】 sendkey 相当于你的推送密钥!千万不要直接把填好 sendkey 的代码上传到 GitHub,别人拿到你的密钥,就可以随意给你的微信推送消息,这个坑很多新手都踩过。本地测试可以写在代码内,分享代码的时候一定要删掉密钥。

在这里插入图片描述

四、完整源码(带超详细行内注释,直接复制按需修改)

from DrissionPage import ChromiumPage
# 微信推送工具:通过Server酱实现消息推送
# 安装方式:pip install serverchan_sdk
# 使用前需在 https://sct.ftqq.com/ 注册账号获取sendkey
from serverchan_sdk import sc_send
import time

# ==========【只需要修改这里的配置!】==========
# 设置你期待的目标价格,低于这个价格就推送提醒
ideal_price = 4500
# 待监控的京东商品链接列表,想加商品直接往列表追加
product_urls = [
"https://item.jd.com/100359969926.html",
"https://item.jd.com/100105522236.html",
"https://item.jd.com/100257373973.html"
]
# Server酱密钥,去sct.ftqq.com复制自己的sendkey
sendkey = "SCT383773TtizsvkvyWGtUlDobeymihyMF"
# =============================================

# 创建浏览器对象,自动调用/下载配套Chromium内核
page = ChromiumPage()

# 遍历所有商品链接,挨个获取商品数据
for p_url in product_urls:
# 打开商品链接
page.get(p_url)
time.sleep(2)

# xpath定位商品标题
title = page.ele('xpath://span[@class="sku-title-name"]').text
# 标题太长,截取前10个字,推送消息更清爽
title = title[:10]

# 获取商品价格,拿到的是字符串类型
price = page.ele('xpath://span[@class="product-price–value"]').text
print(f'你关注的商品{title}的价格是{price}')

# 👉重点思路:如果你要提取热搜、公告而不是价格怎么办?
# 先保存第一次抓取到的内容,下一轮再抓取,比对字符串是否变化
# 字符串不一样 = 网页更新,触发推送通知

# 判断价格,低于目标价就发微信提醒
if float(price) < ideal_price:
print('低于理想价格,请立即入手')
sc_send(
sendkey,
# 推送消息标题
f"你关注的{title}已降价",
# 推送内容,带上商品链接,点开直接下单
f"点击立即购买:{p_url}"
)
else:
print('价格高于理想价格,暂不购买')

# 延时等待,降低访问频率,规避京东反爬风控
page.wait(5)

# 全部监控完毕,关闭浏览器,防止后台残留进程占用内存
page.quit()

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、代码逐段拆解,小白友好讲解

1. 导入包部分

from DrissionPage import ChromiumPage
from serverchan_sdk import sc_send
import time

  • ChromiumPage:DrissionPage 的核心类,用来操控浏览器、访问网页、定位提取页面元素
  • sc_send:server 酱 SDK 封装好的推送函数,一行代码完成微信消息推送
  • time:延时等待,给页面加载时间,同时降低访问频率,防止被风控

2. 配置区

就是代码里单独标注的区域,大部分场景下只需要修改这一块:设置心理底价、粘贴京东商品链接、填入自己的 sendkey。批量监控多件商品,直接在列表新增 url 即可。

3. 创建浏览器对象

page = ChromiumPage() 首次运行脚本,工具会自动下载配套 Chromium 浏览器,不需要手动安装 Chrome。

在这里插入图片描述

4. 循环遍历商品链接

for 循环挨个打开我们配置好的商品链接,分开抓取,一个链接出问题,改一下 xpath 就行。

5. xpath 提取标题、价格

这里就是从渲染完成的页面里,根据 xpath 定位到标题和价格标签,读取里面的文字内容。

在这里插入图片描述 在这里插入图片描述

6. 价格判断 + 微信推送

拿到价格字符串转成数字,和我们设置的 ideal_price 对比,满足降价条件就组装消息,调用 sc_send 推送到微信。

7. 延时等待 + 收尾关闭浏览器

每个商品抓取完等待 5 秒,全部跑完之后调用 quit 关闭浏览器进程。

补充:当前版本是单次扫描一遍商品就结束,想要持续挂机轮询监控,外面再套一层 while True 循环就可以。

六、进阶改造:改成热搜 / 网页文本监控

很多朋友不止想盯价格,需求是:只要监控内容发生变化,就发邮件或者微信通知给自己。 原理非常简单: 先保存第一次抓取到的页面文本 old_content;下一轮循环重新抓取 new_content;两者内容不一致,就判定网页发生更新,触发微信推送。

给大家一段精简改造示例,替换掉原来的价格判断逻辑就能用:

# 全局变量,用来保存上一轮的页面内容
old_content = ""
sendkey = "你的sendkey"
monitor_url = "你要监控的网页链接"

while True:
page.get(monitor_url)
time.sleep(3)
# 抓取需要监控的文本区域,xpath自行替换
content_ele = page.ele('xpath://这里替换成你的xpath')
new_content = content_ele.text

if old_content == "":
# 第一次运行,初始化内容,不推送
old_content = new_content
print("首次抓取,记录初始内容")
else:
if new_content != old_content:
# 内容发生变化,推送通知
push_title = "📢网页内容更新!"
push_content = f"检测到页面变动\\n新内容:{new_content}\\n链接:{monitor_url}"
sc_send(sendkey, push_title, push_content)
# 更新旧内容,用于下一轮对比
old_content = new_content
time.sleep(300)

热搜、官网公告、预约通知、库存变动这类动态页面,都可以用这套对比逻辑。 如果你想要同时支持邮件通知,可以再加一段 smtp 发邮件的函数,判断分支里同时调用微信推送和发邮件就行。

在这里插入图片描述

七、踩坑避坑专区(高频问题汇总)

坑 1:xpath 定位失效!京东页面经常改版,class 属性、标签结构会改动,直接元素找不到报错。 解决:浏览器 F12 开发者工具,选中目标元素右键,复制新的 xpath,替换代码里旧的定位语句即可。

坑 2:延时太短触发京东风控,弹出滑块验证码。 解决:不要把等待时间设置太小,自用监控,单商品等待 5s 以上,轮询间隔建议 300s 起步,高频访问很容易被限制。

在这里插入图片描述

坑 3:价格字符串带有 ¥、换行等特殊字符,直接 float (price) 转数字报错。 解决:提前清洗字符,比如 price = page.ele(…).text.replace("¥",""),再转 float。

坑 4:Server 酱推送失败。 排查方向:sendkey 复制多带空格、微信没有完成绑定、触发平台限流、网络不通。

坑 5:DrissionPage 初次运行自动下载 Chromium 失败,网络原因卡住。 解决:可以手动下载对应版本浏览器,然后配置路径给 DrissionPage,跳过自动下载环节。

八、定时运行方案,两种方式任选

1. 简易版:在外层套 while True 循环 + sleep 延时,脚本开着 CMD 窗口就会一直循环监控,适合电脑长时间开机挂机。 缺点:关掉窗口监控就停止。

在这里插入图片描述

2. 稳定进阶版:Windows 使用【任务计划程序】、Linux 服务器用 crontab 定时调度脚本。适合放在服务器上长期跑,不用一直开终端。

在这里插入图片描述

⚠️ 重要免责声明:本脚本仅用于个人学习、自用监控,禁止高频大规模爬取,遵守京东 robots 协议,严禁商用、恶意爬虫,违规带来的相关责任与本文无关!

九、结尾总结 + 互动

这个脚本核心能力:批量监控多个商品、降价微信推送,底层逻辑通用性很强,改一改 xpath 和判断逻辑,就能迁移到绝大多数动态网页,只要页面内容一变,微信(或者邮件)自动通知你,监控热搜、公告、库存、开售提醒都没问题。

大家平时想监控什么网页?评论区留言,我有空可以帮大家调整适配代码!

嘿嘿,再给大家拓展一下:如果想要同时加上邮件通知,该怎么接入 SMTP 发邮件代码?大家可以自己研究,核心思路就是新增一个发邮件函数,和 Server 酱推送放在同一个判断分支里。


赞(0)
未经允许不得转载:171主机测评 » Python 京东商品价格监控脚本|降价自动微信推送,还能进行实时热搜监控!
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址