一、案例背景与采集目标
买电子产品最让人纠结的就是价格:同一款机型,今天「秒杀价」4999,明天可能回到 5499,叠加不同的券又能差出好几百。如果能连续几天把价格记下来,就能看出「什么时候下手最划算」。这就是价格监测——把分散在不同时间点的价格,变成一条能比较、能画图的序列。
示范站点选京东搜索页,搜「笔记本电脑」的结果页,网址 https://search.jd.com/Search?keyword=笔记本电脑。它是「搜索列表页采集」里难度较高的一种:商品标题、店铺、评论数在列表 HTML 里能直接看到,而价格是异步加载的——页面先显示占位符,过一会儿才由脚本把真实价格填进去。能不能等到价格出现再取数,是本案例的第一个坎。
1.1 这个案例要拿到什么
- 关键词「笔记本电脑」搜索结果的前 2 页商品;
- 每条商品:SKU 编号、商品标题、当前价、划线价、店铺名、是否自营、店铺类型、评论数、好评率、促销标签、所在地区、库存状态、商品链接、采集时间;
- 同一批 SKU 隔几天再采一次,把多次结果拼在一起,就得到一条价格时间序列;
- 价格类字段同时保留「数值」与「页面原文」,方便回溯核对。
1.2 三个绕不开的难点
| 难点 | 页面上的样子 | 解决思路 |
|---|---|---|
| SKU 与 SPU 分不清 | 同一款机型有多个 SKU(不同内存、颜色) | 只认 SKU(商品链接里的那串数字),SPU 是「型号」,两者不要混在一列 |
| 价格异步加载 | 价格位置先显示「¥--」,几秒后才出现数字 | 要等页面加载完成再取;或读取页面里已经写入的价格变量 |
| 促销价不等于到手价 | 「秒杀价 4999」旁边还有「满 5000 减 300」「领券再减」 | 记录当前价与促销标签,到手价需叠加计算并注明「含券」与否 |
| 翻到第 3 页要登录 | 前 2 页能看,继续翻会弹出登录提示 | 课堂只采前 2 页做演示,不绕过登录、不伪造身份 |
课程思政|数据安全与法治素养 · 能打开,不等于能随便采
电商页面人人都能打开,但这不代表可以把整站数据成批搬走。平台的用户协议、robots 约定、著作权与个人信息保护,都是采集前要先想清楚的红线。本案例只采公开可见的商品信息,只采前 2 页,只用于课堂分析——把边界守住,技术才有意义。
目标站点与交付产物
下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。
| 项目 | 内容 |
|---|---|
| 示范站点 | 京东 · 商品搜索(笔记本电脑) https://search.jd.com/Search?keyword=笔记本电脑 列表 HTML 带商品,价格是异步加载的;反爬严格,翻到第 3 页即要求登录,课堂只演示前 2 页 |
| 延伸站点 |
|
| 交付产物 |
|
| 难度 | ★★★ 高 |
| 合规提示 | 京东反爬严格,课堂只采前 2 页做演示,明确「不批量、不绕过风控、不伪造登录态」;隔几天再采一次做价格曲线是合法且有趣的分析;数据只用于课堂学习,不做商业比价分发。 |
二、数据源与字段设计
数据源就一个页面:京东搜索页,地址 https://search.jd.com/Search?keyword=笔记本电脑。关键词写在网址参数里(keyword= 后面),换词就换一批商品;翻页靠页码参数控制。
2.1 站点信息
| 项目 | 内容 |
|---|---|
| 站点全称 | 京东(jd.com),自营 + 第三方店铺(POP)混合的电商平台 |
| 示范网址 | 京东搜索页(关键词:笔记本电脑) |
| 页面形态 | 搜索列表页:商品标题、店铺、评论数等在 HTML 中可见,价格由脚本异步加载 |
| 关键词入口 | 网址参数 keyword= 后跟关键词;翻页用页码参数 |
| 规模说明 | 一个热门关键词通常返回数千条商品,分页展示,每页数十条 |
| 访问约束 | 反爬严格、部分页面需登录;课堂只采前 2 页并低频访问(间隔 2 秒以上) |
2.2 延伸站点(只讲结构与合规边界)
| 站点 | 网址 | 教学用途 |
|---|---|---|
| 拼多多 | https://mobile.yangkeduo.com/ | 移动端动态渲染,可讨论页面形态差异 |
| 苏宁易购搜索 | https://search.suning.com/笔记本电脑/ | 结构较规整,可作中等难度对照 |
| 慢慢买(历史价格) | https://www.manmanbuy.com/ | 专门的比价与历史价格站,正好对应本案例的「价格序列」 |
2.3 完整字段表(15 个字段)
价格类字段一律数值 + 原文成对出现,方便回溯。下表是京东搜索列表页能稳定取到的字段。
| 字段名 | 字段含义 | 示例值 | 口径与备注 |
|---|---|---|---|
SKU编号 | 商品最小销售单元编号 | 10086419244 | 商品链接里的那串数字,是唯一标识,按文本存 |
商品标题 | 商品名称原文 | 联想拯救者Y7000P 笔记本电脑 16G 512G | 保持原文,促销前缀不要混进来 |
当前价 | 页面当前展示价 | 4999.00 | 纯数字,单位元;注意这是促销期内价格 |
当前价原文 | 当前价页面写法 | ¥4999.00 | 留档,便于回溯核对 |
划线价 | 参考价或建议零售价 | 5999.00 | 纯数字;划线价不是实际成交价 |
店铺名 | 销售店铺名称 | 联想京东自营旗舰店 | 以页面显示为准 |
是否自营 | 是否为京东自营 | 自营 | 取值为「自营」或「非自营」 |
店铺类型 | 店铺性质 | 京东自营 | 如「京东自营」「POP 第三方」 |
商品链接 | 商品详情页地址 | https://item.jd.com/10086419244.html | 完整网址(示例商品),能直接点开 |
评论数 | 评价条数 | 120753 | 去掉「+」与「万」后换算成整数 |
好评率 | 好评占比 | 98 | 只存数字;页面写「98%」则存 98 |
促销标签 | 页面上的活动标记 | 秒杀;满5000减300 | 多个标签用「;」连接,没有留空 |
所在地区 | 配送或发货地区 | 广东 广州市 | 影响运费与到货时间 |
库存状态 | 是否有货 | 有货 | 如「有货」「无货」「仅剩 3 件」 |
采集时间 | 本次采集的时点 | 2026-10-08 20:15:30 | 价格随时变,必须记时点 |
2.4 SKU 与 SPU 的区别
SPU(Standard Product Unit,标准化产品单元):
描述「这是什么型号」,例如「联想拯救者 Y7000P」。
它是商品的概念,不直接对应一个可下单的链接。
SKU(Stock Keeping Unit,库存量单位):
描述「具体是哪一个可购买的规格」,例如
「Y7000P / 16G / 512G / 灰色」,对应一个唯一的商品链接与价格。
商品链接 item.jd.com/10086419244.html 里那串数字就是 SKU(示例商品,编号 10086419244)。
为什么价格监测必须按 SKU 采:
同一款 SPU 下,16G 版和 32G 版价格不同、库存不同;
只按 SPU 记录会把不同价格混成一条,结论就错了。
2.5 三种价格别搞混
| 价格名称 | 含义 | 能不能当成交价 |
|---|---|---|
| 当前价 | 页面当下展示的售价 | 接近成交价,但可能还要叠加券 |
| 划线价 | 参考价 / 建议零售价,常被画一道横线 | 不能,它是用来对比的标价 |
| 到手价 | 叠加优惠券、满减之后实际应付 | 这才是真实成交参考,需自己算清楚 |
AI 助手小贴士|京东列表页里,有些字段在 HTML 中、有些由脚本异步加载。让 AI 先把「能稳定取到的字段清单」和「示例值」列出来,你确认后再开采。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请先打开京东搜索页(关键词:笔记本电脑),把列表里每个商品能稳定取到的字段名和示例值列成一张表,并标注哪些字段是异步加载的,先不要批量采集。
三、零代码操作步骤
工具与技能|先看清三个角色,再动手
本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。
| 角色 | 负责什么 | 在本案例里具体做什么 |
|---|---|---|
| 你 | 确认字段清单、验收结果、清洗与合规把关 | 盯字段清单、核对结果、处理异常(如验证码) |
| WorkBuddy | 接中文指令:探字段 → 批量采 → 清洗 → 导出交付物 | 拆解本篇的采集任务并跑完全量、产出交付物 |
| 浏览器技能 BrowserSkill | 以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理 | 打开商品搜索页,标出哪些字段是异步加载的(价格常常后到) |
五步操作主线(全课程统一,每一篇都按这个顺序推进):
- 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
- 现场踩点(浏览器技能 BrowserSkill):打开京东搜索结果页,让它「先看一眼」:列出能采到的字段与示例值,并标出哪些是异步加载的。
- 小样试采(WorkBuddy):只采前 3 条,重点看当前价、划线价、评论数、好评率四列。
- 核对与清洗:① 价格拿到的是不是空值或占位符(要等加载完成再取);② 每条 SKU 编号与商品链接里的数字一致吗;③ 促销标签有没有单独成列。
- 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
用浏览器技能 BrowserSkill 打开 https://search.jd.com/Search?keyword=笔记本电脑(京东 · 商品搜索(笔记本电脑)),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。本案例全程在 WorkBuddy 里用中文对话完成,不写一行代码。
- 新建对话,粘贴「采集任务提示词」(见下一节),把京东搜索页网址原样复制进去。
- 让它先「看一眼」。说「先打开这个页面,把每个商品能采到的字段名和示例值列出来,标出哪些是异步加载的,先不要采集」。
- 先采 3 条试水。只采前 3 条,重点检查当前价、划线价、评论数、好评率四列的清洗结果。
- 等到价格出现再取数。如果价格拿到的是空值或占位符,说「请等页面价格加载完成后再读取,不要取占位符」。
- 核对 SKU。说「请确认每条记录的 SKU 编号与商品链接里的数字一致,不一致的请标出」。
- 放开到前 2 页。确认无误后说「请采集前 2 页的全部商品,按 SKU 去重后合并」。
- 导出并命名。说「导出为 Excel,文件名
ecom_jd_笔记本电脑_20261009.xlsx」。
四、提示词模板与追问技巧
下面这段可以直接复制。三个要点:真实网址写全、字段编号列清、价格口径写死。
请帮我完成一个京东商品与价格监测任务。
【目标页面】京东搜索页,网址:https://search.jd.com/Search?keyword=笔记本电脑
【搜索关键词】笔记本电脑
【采集范围】搜索结果前 2 页;先只采前 3 条给我验证
【需要字段】按这个顺序,价格类字段都要「数值 + 原文」:
1. SKU 编号(商品链接里的数字,按文本存)
2. 商品标题(保持原文,不要带促销前缀)
3. 当前价(纯数字,单位元,两位小数)
4. 当前价原文(页面上的写法,如 ¥4999.00)
5. 划线价(纯数字,单位元;没有就留空)
6. 店铺名
7. 是否自营(只能填「自营」或「非自营」)
8. 店铺类型(如「京东自营」「POP 第三方」)
9. 商品链接(完整网址,https://item.jd.com/… 这种)
10. 评论数(整数,去掉「+」,有「万」乘 10000)
11. 好评率(只存数字,页面「98%」就存 98)
12. 促销标签(多个用「;」连接,没有留空)
13. 所在地区
14. 库存状态(有货/无货)
15. 采集时间(格式 2026-10-08 20:15:30)
【执行要求】
- 价格是异步加载的:请等页面价格加载完成后再读取,读到「¥--」这类占位符就重试,不要直接写入
- 当前价是促销期内价格,请另用一列「促销标签」记录活动,不要把促销价当成长期价格
- 每条记录必须带采集时间;同一批 SKU 以后重复采集时,写成新记录追加,不要覆盖旧记录
- 只采前 2 页,控制频率(每次请求间隔 2 秒以上),出现验证码或要求登录就立即停止并告诉我
- 我确认 3 条样例后,再采集前 2 页全部商品
- 导出为 Excel,文件名 ecom_jd_笔记本电脑_20261009.xlsx
4.1 三条常用追问指令
追问一(价格口径):
请把「当前价」「划线价」两列并排给我看,
逐条说明它是不是促销价、有没有叠加券;
如果页面还有「到手价」相关的券,请单独列出来,不要直接算进当前价。
追问二(异步加载核对):
请检查每一条的当前价是否为真实数字,
凡是空值或占位符(如 ¥--)的,请重新等待页面加载后再取一次,
并告诉我哪几条曾经取到过占位符。
追问三(追加快照):
请保留上一次的采集结果不动,
把这次采到的价格作为新的一批追加进去,
并在文件里加一列「采集时间」,方便我做价格随时间变化的对比。
AI 助手小贴士|异步加载的价格最容易取到占位符。如果发现某几条价格是空的,不要让它「估一个」,先问清楚是页面还没加载完,还是根本没显示。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请列出所有当前价为空或显示为占位符的商品,并说明每条的原因:是异步加载还没完成,还是页面确实没有显示价格。
五、结果核对、清洗与保存
下面是 WorkBuddy 返回的结果样例(节选,商品条目为教学示意,价格与库存随时变动,以实时页面为准):
| SKU编号 | 商品标题 | 当前价 | 划线价 | 店铺名 | 是否自营 | 评论数 | 好评率 |
|---|---|---|---|---|---|---|---|
| 10086419244 | 联想拯救者Y7000P 笔记本电脑 16G 512G | 4999.00 | 5999.00 | 联想京东自营旗舰店 | 自营 | 120753 | 98 |
| 10001234567 | 惠普暗影精灵9 笔记本电脑 i7 16G | 5299.00 | 6299.00 | 惠普京东自营旗舰店 | 自营 | 86420 | 97 |
| 10009876543 | 机械革命蛟龙16K 笔记本电脑 R7 16G | 4599.00 | 5199.00 | 机械革命电脑旗舰店 | 非自营 | 35218 | 96 |
| 10005551234 | 华硕天选5 笔记本电脑 R7 16G | 5699.00 | 6499.00 | 华硕京东自营旗舰店 | 自营 | 102340 | 99 |
5.1 四项必查
| 核对项 | 正常表现 | 发现问题怎么问 |
|---|---|---|
| SKU | 与商品链接里的数字完全一致,无重复 | 「第 2 条 SKU 与链接里的数字不一致,请复核」 |
| 当前价 | 全是数字,且不低于 0;占位符已剔除 | 「第 3 条当前价是 ¥--,请重新等待加载后再取」 |
| 评论数 / 好评率 | 已换算成数字,「+」「万」「%」已去掉 | 「第 1 条评论数页面写的是 10万+,请说明换算规则」 |
| 采集时间 | 每条都有,且是同一批次时间 | 「请给所有记录补上同一采集时间,方便追加快照」 |
5.2 清洗与保存
① 去空格:
所有文本列去掉首尾空格与换行符。
② 统一价格:
当前价、划线价保留两位小数;占位符一律置空并标注原因。
③ 按 SKU 去重:
按「SKU 编号」去重,重复的保留第一条。
④ 追加快照:
每次采集的结果单独存一份,新增「采集时间」列;
多次采集后按 SKU + 采集时间纵向合并,形成价格序列。
ecom_jd_笔记本电脑_20261009.xlsx ← 当天原始结果(原样保留)
ecom_jd_笔记本电脑_20261009_clean.xlsx ← 清洗后结果
price_history_笔记本电脑.csv ← 多次采集纵向合并的价格序列
ecom_jd_笔记本电脑_20261009_log.txt ← 日志:页数、条数、取到占位符的记录
AI 助手小贴士|清洗前先另存副本。让 AI 直接改原始表,一旦口径改过头,页面原文就找不回来了。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请保留原始文件不动,另存一份副本再清洗,最后告诉我清洗前后各有多少条、删掉或置空了哪些记录。
课程思政|工匠精神与严谨求实 · 三块钱的差错,结论就反了
「¥4999.00」少看一位,或者把「划线价 5999」当成实际售价,得出的「优惠力度」就全错了。价格监测的价值在于数字可信,而可信来自逐条对照、用链接核对 SKU、把占位符剔除干净这些笨功夫。
六、常见问题与合规红线
6.1 五个高频问题
| 现象 | 原因 | 怎么处理 |
|---|---|---|
| 价格全是「¥--」或空 | 异步加载还没完成就取数了 | 要求「等价格加载完成后再读」,读到占位符就重试 |
| 同一款机型出现多条不同价格 | 没按 SKU 区分,把不同规格混在一起 | 按 SKU 编号去重并核对链接,不同 SKU 本就是不同商品 |
| 评论数出现「10万+」无法精确 | 页面只给了近似值 | 按原文记录并注明是区间下限,不要假装精确 |
| 翻到第 3 页弹出登录 | 触发了京东的登录墙与风控 | 立即停止,课堂只采前 2 页,不绕过登录 |
| 过了一会儿再采,价格变了 | 促销价格随时调整 | 这是正常现象;记录采集时间,把它当成价格序列的一个点 |
6.2 合规红线
- 只采前 2 页。京东反爬严格,本案例明确不批量、不绕过风控、不伪造身份。
- 控制频率。请求之间留足间隔(2 秒以上),不并发轰炸;出现验证码立即停手。
- 只用公开信息。商品标题、价格、评论数属于公开展示信息;不采买家个人信息、不做账号爬取。
- 用途正当。结果用于课堂比价与价格趋势分析;对外展示时注明来源与采集时间,不冒用平台名义。
课程思政|诚信与职业操守 · 比价可以有,误导不行
价格监测常用于比价与选品,本身无可厚非。但把「划线价」当成跌幅、把「秒杀价」说成长期价格、把估算的数据当精确值发布,就是在误导他人。做数据要有操守:口径写清楚,来源标明白,不为了好看而修饰数字。
七、随堂自测(10 题)
点击选项即可判分,答错的题会立刻显示解析。
1在京东商品列表里,识别「同一款机型的不同配置」,应该用哪个标识?
- A. SKU 编号
- B. SPU 名称
- C. 店铺名称
- D. 品牌名称
2列表页价格位置先显示「¥--」,过几秒才出现数字,最可能的原因是?
- A. 价格被平台隐藏了
- B. 必须登录才能看到价格
- C. 价格由脚本异步加载
- D. 网络断了
3页面上「秒杀价 4999 元」旁边还有「满 5000 减 300」,采集时正确的做法是?
- A. 把 4999 当成平时价格
- B. 把 4699 直接当作到手价写进当前价
- C. 记录当前价 4999 与促销标签,到手价另算并注明是否含券
- D. 取 4999 与 4699 的平均值
4翻到京东搜索第 3 页时弹出登录,课堂上的正确做法是?
- A. 想办法绕过登录继续翻页
- B. 只采前 2 页做演示,不绕过登录
- C. 多试几次直到能翻页
- D. 伪造账号身份
5字段表里的「划线价」指的是?
- A. 实际成交价
- B. 历史最低价
- C. 叠加优惠券后的到手价
- D. 参考价或建议零售价,不是实际成交价
6某商品好评率页面显示「98%」,清洗后这一列应该存成?
- A. 98
- B. 0.98
- C. 98%
- D. 0.98%
7「是否自营」这一列,最可靠的判断依据是?
- A. 看店铺类型是否为「京东自营」
- B. 看价格高不高
- C. 看评论数多不多
- D. 看标题长不长
8某商品评论数页面显示「10万+」,正确的处理是?
- A. 填 100000
- B. 填 100001
- C. 随便填一个十万左右的数
- D. 按原文记「10万+」并注明这是区间下限
9关于京东的反爬机制,本课的态度是?
- A. 研究如何绕过验证码
- B. 控制频率、只采公开前 2 页,遇到风控立即停止
- C. 用代理批量突破
- D. 伪造登录态继续采
10把同一批 SKU 隔几天再采一次,最大的价值是?
- A. 凑够表格的行数
- B. 提高商品的好评率
- C. 画出价格随时间变化的曲线,帮助判断购买时机
- D. 让文件更大