今天你 AI 赋能了吗?打开浏览器,在地址栏输入 xuefulu.ai,按下 Enter 即可访问学府路1号!
2026年10月17日 星期六 12:32:20
常用网址:案例设计 | 案例导航 | 学府路1号 https://xuefulu.ai | 下载 WorkBuddy https://xuefulu.ai/WorkBuddy.html

一、案例背景与采集目标

打开当当网(dangdang.com,国内老牌图书电商),在搜索框里输入「Python编程」,页面立刻返回一屏图书:书名、作者、出版社、出版时间、定价、当当价、折扣、评论数,一行一个商品。这一屏,就是一张现成的图书市场调查表——哪本书更便宜、哪家出版社出得多、哪本书评论最多,全都写在里面。

本案例要做的,就是把这屏信息整整齐齐地搬进表格。示范站点选的是当当网图书搜索结果页,网址 http://search.dangdang.com/?key=Python编程。它属于「搜索列表页采集」,和案例01 的新闻列表页是同一个路子,但难点完全不同:新闻的字段都是干净文本,而图书电商的字段几乎全是「文案」——价格有「定价」和「当当价」两套、折扣写作「7.0折」、评论数写作「48312条评论」。能不能把这些文案变成能计算的数字,就是本案例的成败所在。

1.1 这个案例要拿到什么

1.2 三个绕不开的难点

难点页面上的样子解决思路
价格是「双轨」的一行里既有「定价 ¥88.00」,又有「当当价 ¥66.00」两列分别记录,并注明哪一列才是实际售价
折扣是一句文案「7.5折」「满 100 减 50」「限时抢」折扣统一换算成折扣率(0.75),促销标签单独留一列
评论数是长文案「48312条评论」「1.2万条评论」去掉「条评论」,有「万」的乘换算,保留原文列对照
标签混在书名里书名前带「自营」「电子书」「预售」书名保持原文,标签另立一列,不要混进书名
价格和折扣是本案例的全部重点。书名、作者、出版社基本是照抄,谁都会;能不能把「¥88.00」变成 88.00、把「7.5折」变成 0.75、把「1.2万条评论」变成 12000,才是真本事。
先划边界:本案例只在公开、无需登录的当当图书搜索页上做可运行的示范;京东、天猫等站点有强风控与登录墙,课堂只讲字段结构与合规边界,绝对不教如何破解验证码、伪造身份或绕过风控。

目标站点与交付产物

下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。

项目内容
示范站点当当图书搜索列表(关键词:Python编程)
http://search.dangdang.com/?key=Python编程
结构稳定、字段规整(书名/价格/出版社/评论数),是做电商类采集最合适的示范站点
延伸站点
  • 京东 · 图书搜索(关键词:Python编程) https://search.jd.com/Search?keyword=Python编程(大学生最常用的电商之一;强风控 + 需要登录态,只讲原理)
  • 拼多多 · 图书搜索(关键词:Python编程) https://mobile.yangkeduo.com/search_result.html?search_key=Python编程(移动端为主,风控强)
  • 苏宁易购 · 图书搜索(关键词:Python编程) https://search.suning.com/Python编程/(结构较规整,可作中等难度对照)
  • 淘宝 · 图书搜索(关键词:Python编程) https://s.taobao.com/search?q=Python编程(国内最主流的电商入口;搜索需登录态,只讲结构、不做登录采集)
交付产物
  • 数据明细.xlsx(原始文案列 + 结构化数值列并排,可核对)
  • 数据明细.html(价格排序、按店铺筛选)
  • 数据看板.html(价格分布直方图 + 价格-销量散点图)
  • 技能压缩包(电商列表采集 + 价格/销量清洗规则表)
难度★★☆ 中
合规提示主流电商有明确的反爬与 robots 约束,教学示范走结构规整的站点;提示词中不提供任何绕过验证码、伪造登录态的做法,只讲识别风控与停止采集。

二、数据源与字段设计

数据源就一个页面:当当网图书搜索结果页,地址 http://search.dangdang.com/?key=Python编程。它把关键词直接写在网址参数里(key= 后面就是关键词),换一个词就换一批结果,非常适合课堂反复演练。

2.1 站点信息

项目内容
站点全称当当网(dangdang.com),国内老牌自营 + 平台混合的图书电商
示范网址http://search.dangdang.com/?key=Python编程
页面形态静态 HTML 列表页(服务端渲染),无需登录、无需 Cookie,右键查看源码即可看到全部商品
关键词入口网址参数 key= 后跟关键词;另有 page_index= 控制页码
规模说明一个关键词通常返回数百至数千条结果,分页展示,每页数十条
访问约束公开页面、未见明显反爬;但仍应控制频率(请求间隔 1 秒以上),不做并发轰炸

2.2 延伸站点(只讲原理与合规边界)

站点网址教学用途
京东商品搜索https://search.jd.com/Search?keyword=Python编程强风控 + 需要登录态,只讲字段结构,不做演示
苏宁易购搜索https://search.suning.com/Python编程/结构较规整,可作中等难度对照

2.3 完整字段表(15 个字段)

凡「页面写法五花八门」的字段,都按原文列 + 清洗列成对出现。下表是当当图书列表页能稳定取到的字段。

字段名字段含义示例值口径与备注
序号列表中的顺序1采集时按页面顺序自动生成
关键词本次搜索用的词数据采集写入文件时用来区分批次
书名图书标题原文统计学习方法保持原文,促销前缀不要混进来
作者图书作者李航多作者用「、」连接,译著另起
出版社出版机构清华大学出版社做出版社发文量统计用
出版时间出版年月2019-05-01统一成 YYYY-MM-DD
定价图书标价88.00纯数字,单位元;页面原文「定价 ¥88.00」
当当价当当实际售价66.00纯数字,单位元;这是真正比价用的价格
折扣售价折扣率0.75由「7.5折」换算,保留两位小数
促销标签页面上的活动标记满100减50没有就留空;多个标签用「;」连接
评论数买家评论条数120753去掉「条评论」;有「万」要乘 10000
评论数原文评论数页面写法120753条评论留档,便于回溯核对
商品链接图书详情页地址http://product.dangdang.com/29156843.html完整网址,能直接点开
封面图图书封面地址http://img3m2.ddimg.cn/…/29156843-1_b_1.jpg取真实图片地址,不要占位图
采集日期本次采集的日期2026-10-08固定填当天,方便合并多次采集

2.4 价格与折扣的清洗口径

价格是重灾区。同一行里可能出现四种写法,处理规则要先说死:

页面写法含义清洗结果口径说明
定价 ¥88.00图书标价88.00去掉货币符号,保留两位小数
当当价 ¥66.00实际售价66.00比价一律用这一列,不用定价
7.5折折扣文案0.75去掉「折」再除以 10;「7.5折」即 0.75
88.20-126.00套装区间价88.20只取最低价,并在备注注明「区间价」
清洗口径
常见评论数写法与目标结果(示例):
  「120753条评论」   → 120753
  「1.2万条评论」    → 12000
  「暂无评论」       → 空值(不要填 0,0 与「没有」含义不同)

核对公式(示例):
  当当价 66.00 ÷ 定价 88.00 = 0.75,与页面折扣 7.5折 完全吻合 → 说明两列都对上。
  对不上就说明某一列取错了,要回原文复核。
折扣不是「7.5 元」,也不是「75%」。「7.5折」等于折扣率 0.75,也就是原价的 75%。字段表里统一存成 0.75 这样的两位小数,做统计时直接相乘即可。

AI 助手小贴士|价格和折扣最容易漏掉「区间价」「满减」这两种写法。让 AI 先把页面上出现过的所有价格、折扣、促销写法穷举一遍,你确认口径后再批量执行。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请先把这一页里所有价格、折扣和促销标签的原始写法各列成一个清单,标出有几种不同格式,先不要清洗。

课程思政|数据安全与法治素养 · 页面上的价格只是快照

电商页面写着「当当价」「限时折扣」,一个价格背后往往有一串活动规则。做数据的人要清醒:采来的价格只是某一时刻的页面快照,不等于真实成交价,更不等于长期价格。把采集时间、口径、来源如实标注,才对得起这份数据,也不误导看数据的人。

三、零代码操作步骤

工具与技能|先看清三个角色,再动手

本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。

角色负责什么在本案例里具体做什么
你确认字段清单、验收结果、清洗与合规把关盯字段清单、核对结果、处理异常(如验证码)
WorkBuddy接中文指令:探字段 → 批量采 → 清洗 → 导出交付物拆解本篇的采集任务并跑完全量、产出交付物
浏览器技能
BrowserSkill
以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理打开商品搜索列表,确认卡片字段与翻页方式

五步操作主线(全课程统一,每一篇都按这个顺序推进):

  1. 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
  2. 现场踩点(浏览器技能 BrowserSkill):打开 http://search.dangdang.com/?key=数据采集,让它先把每个商品能采到的字段名和示例值列出来,先不要采集。
  3. 小样试采(WorkBuddy):只采前 5 条,重点看定价、售价、折扣、评论数四列清洗得对不对。
  4. 核对与清洗:① 折扣率与「售价 ÷ 定价」算出来一致吗;② 价格是不是纯数字(有没有「¥」残留);③ 翻页有没有漏页。
  5. 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
起手一句话(可直接复制):用浏览器技能 BrowserSkill 打开 http://search.dangdang.com/?key=Python编程(当当图书搜索列表(关键词:Python编程)),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。

本案例全程在 WorkBuddy 里用中文对话完成,不写一行代码。

  1. 新建对话,粘贴「采集任务提示词」(见下一节)。关键词先用「数据采集」,把网址原样复制进去。
  2. 让它先「看一眼」。说「先打开 http://search.dangdang.com/?key=Python编程,把每个商品能采到的字段名和示例值列出来,先不要采集」。这一步能避免字段猜错。
  3. 先采 5 条试水。只采前 5 条,重点检查定价、当当价、折扣、评论数四列的清洗结果对不对。
  4. 用公式核对。拿「当当价 ÷ 定价」算折扣率,和「折扣」列对照,看是否一致;不一致就说明口径有问题。
  5. 放开到整页。确认无误后说「请按同样规则采集本页全部商品」。
  6. 要求翻页。如果列表有「下一页」或走页码参数,说「继续采第 2 页并合并,按商品链接去重」。
  7. 导出并命名。说「导出为 Excel,文件名 ecom_dangdang_数据采集_20261009.xlsx」。
每一步都要先看结果再做下一步。电商数据一旦口径错了,一整页一起错,回头清理比一开始就慢。

四、提示词模板与追问技巧

下面这段可以直接复制。注意三个要点:真实网址写全、字段编号列清、清洗口径写死。

提示词
请帮我完成一个电商图书列表采集任务。
【目标页面】当当网图书搜索结果页,网址:http://search.dangdang.com/?key=Python编程
【搜索关键词】数据采集
【采集范围】搜索结果第 1 页,先只采前 5 条给我验证
【需要字段】按这个顺序,价格与折扣都要「数值 + 原文」:
  1. 序号(从 1 开始)
  2. 关键词
  3. 书名(保持原文,不要带「自营」「电子书」这类前缀)
  4. 作者(多作者用「、」连接)
  5. 出版社
  6. 出版时间(格式 YYYY-MM-DD)
  7. 定价(纯数字,单位元,两位小数)
  8. 当当价(纯数字,单位元,两位小数,这是实际售价)
  9. 折扣(由「7.5折」换算成 0.75 这样的折扣率,保留两位小数)
  10. 促销标签(如「满100减50」,没有就留空)
  11. 评论数(整数,去掉「条评论」,有「万」乘 10000)
  12. 评论数原文(页面上的写法,如「1.2万条评论」)
  13. 商品链接(完整网址,http://product.dangdang.com/… 这种)
  14. 封面图(真实图片地址,不要占位图)
  15. 采集日期(今天的日期)

【清洗口径】
  - 价格:优先记录「当当价」为实际售价;区间价只取最低价并在备注注明;
    「¥39.9」按 39.90 记录。
  - 折扣:去掉「折」再除以 10;无法识别的写法折扣留空,不要猜。
  - 评论数:出现「万」就乘以 10000;无法识别时留空,不要填 0。

【输出要求】
  1. 先在对话里给出 5 条预览,字段顺序按上面来
  2. 用「当当价 ÷ 定价」算出折扣率,与「折扣」列对照,把对不上的行标出来
  3. 我确认后,再采集本页全部商品
  4. 导出为 Excel,文件名 ecom_dangdang_数据采集_20261009.xlsx

4.1 三条常用追问指令

追问指令
追问一(补全链接):
第 3 条的商品链接不是完整网址,请补上域名改成绝对地址,
并确认每条链接都能用浏览器直接打开。

追问二(核对清洗):
请把「定价」「当当价」「折扣」三列并排给我看,
逐条说明每一条的折扣是怎么算出来的,与页面文案是否一致。

追问三(继续翻页):
这一页还有下一页,请继续采集第 2 页并与现有结果合并,
按「商品链接」去重后重新给我完整表格。
不要让 AI「自己判断」口径。只要是价格、折扣、评论数这类容易歧义的字段,就把规则一条条写进提示词——写得越死,结果越稳。

AI 助手小贴士|如果某条商品的评论数值空着,不要直接让它「补一个」。先问它是页面没有、还是识别失败,两种情况处理方式完全不同。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请列出所有评论数为空的商品,并告诉我每一条的原因:是页面未显示,还是写法不在识别规则里。

五、结果核对、清洗与保存

下面是 WorkBuddy 返回的结果样例(节选,书目为真实出版物,价格与评论数为教学示意,以实时页面为准):

序号书名作者出版社定价当当价折扣评论数
1机器学习周志华清华大学出版社88.0066.000.7548312
2统计学习方法李航清华大学出版社88.0066.000.75120753
3算法图解[美] Aditya Bhargava人民邮电出版社49.0034.300.7020118
4数据库系统概论王珊高等教育出版社45.0036.000.8015608

5.1 四项必查

核对项正常表现发现问题怎么问
条数与页面商品数一致「本页应该有 60 条,现在只有 48 条,请补采漏掉的」
价格定价、当当价两列全是数字,当当价 ≤ 定价「第 2 条当当价高于定价,请复核是不是取错了」
折扣与「当当价 ÷ 定价」算出的结果一致「第 4 条折扣与两列价格对不上,请说明规则」
评论数能识别的都换算成整数,不能识别的留空「第 5 条评论数空着是对的,请不要填 0」

5.2 清洗与保存

清洗指令
① 去空格:
   所有文本列去掉首尾空格与换行符。

② 统一价格与折扣:
   定价、当当价保留两位小数;折扣统一成两位小数的折扣率。

③ 按链接去重:
   按「商品链接」去重,重复的保留第一条。

④ 补两列:
   新增「采集日期」(今天)与「关键词」(数据采集),方便以后合并多次采集。
文件命名
ecom_dangdang_数据采集_20261009.xlsx        ← 原始结果(原样保留)
ecom_dangdang_数据采集_20261009_clean.xlsx  ← 清洗后结果
ecom_dangdang_数据采集_20261009_log.txt     ← 日志:页数、条数、异常
把关键词写进文件名,是电商采集的好习惯。同一天采「数据采集」和「机器学习」,两个文件不会互相覆盖。

AI 助手小贴士|清洗前先另存副本。让 AI 直接改原始表,一旦口径改过头,原始写法就找不回来了。

打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请保留原始文件不动,另存一份副本再清洗,最后告诉我清洗前后各有多少条、改了哪些列。

课程思政|工匠精神与严谨求实 · 一个逗号之差,结论就变了

「¥1,299.00」少去掉一个千分位逗号,就成了 1.299;「7.5折」当成 75%,就等于把折扣看反了。价格与折扣直接决定比价结论,容不得半点马虎。数据工作者的严谨,就体现在这种「逐条对照、用公式复核」的笨功夫里。

六、常见问题与合规红线

6.1 五个高频问题

现象原因怎么处理
价格列里混着「¥」「起」等符号没有区分原文列和数值列要求把价格拆成「数值 + 原文」两列,数值列只放数字
折扣出现 7.5 和 0.75 两种写法换算规则没统一把换算规则写进提示词,统一存成 0.75 这样的折扣率
书名被截断或改写过AI 为了整齐自作主张明确要求「书名保持原文,不截断、不改写」
翻页后出现重复商品列表分页有重叠或推荐位重复按商品链接去重,并说明重复条数
出现验证码或要求登录触发了平台风控立即停止,不要在演示站点之外反复尝试

6.2 合规红线

  1. 只在公开、无需登录的当当搜索页做示范。京东、天猫等站点有风控且内容受保护,不研究、不尝试绕过。
  2. 控制频率。请求之间留足间隔(1 秒以上),不并发轰炸;出现验证码立即停手。
  3. 只用公开信息。书名、价格、评论数属于公开展示信息;不采买家个人信息、不做账号爬取。
  4. 用途正当。结果用于课堂比价分析;对外展示时注明来源与采集时间,不冒用平台名义。
「能采到」不等于「可以采」。本课的考核标准是「在合法合规的前提下,拿到能用的数据」,而不是「攻破某个平台」。遇到反爬,正确做法是换数据源。

课程思政|诚信与职业操守 · 比价可以有,弄虚作假不行

电商采集最常见的用途是比价与选品,这本身无可厚非。但把「定价」当成实际售价、把区间价的最低值写成全部规格的价格,就是在误导结论。做数据要有操守:口径写清楚,来源标明白,不为了好看而修饰数字。

七、随堂自测(10 题)

点击选项即可判分,答错的题会立刻显示解析。

已答 0 / 10 · 正确 0 —

1采集当当图书搜索列表的价格时,最推荐的做法是?

  • A. 同时保留「定价」「当当价」两列,并注明哪列是实际售价
  • B. 只保留一个「价格」列
  • C. 把「定价」当成实际售价
  • D. 只留数值,删掉原文
答案:A。「定价」是标价、「当当价」是实际售价,两者口径不同;分开记录并注明,既算得准又查得清。

2页面写成「88.20-126.00」,合理的清洗口径是?

  • A. 取平均值 107.10
  • B. 取最高价 126.00
  • C. 只取最低价 88.20,并注明这是区间价
  • D. 整条删除
答案:C。区间价无法用一个数代表,通常取最低价并备注,避免误导;直接删除会丢信息。

3某商品评论数原文是「暂无评论」,评论数(数值)列应该填什么?

  • A. 0
  • B. 写「无」
  • C. 空值(留空),并说明原因
  • D. 填一个相近的数
答案:C。空值与 0 含义不同:填 0 会被当成「0 条评论」,与「页面未显示」混淆;「填一个相近的数」更是凭空造数据,绝不能做。

4在 WorkBuddy 里做零代码采集,动手前最有价值的一步是?

  • A. 先列出页面能采到的全部字段与示例值
  • B. 先采 100 条测试稳定性
  • C. 先导出成 Excel
  • D. 先让它写好脚本
答案:A。先摸清字段清单,能避免字段猜错、口径返工,是最省时间的一步。

5关于京东、天猫等主流电商的反爬,本课的态度是?

  • A. 研究如何绕过验证码
  • B. 只讲字段结构与合规边界,不在其上做演示、不绕过风控
  • C. 用代理 IP 批量突破限制
  • D. 伪造登录身份继续采
答案:B。合规是本课底线。有风控的站点只讲原理,遇到验证码应立即停止。

6页面上的「7.0折」换算成折扣率,正确的是?

  • A. 7.0
  • B. 0.070
  • C. 0.70
  • D. 70
答案:C。「7.0折」即原价的 70%,折扣率为 0.70;去掉「折」再除以 10 即可。

7清洗时发现某条书名与页面原文不一致,应该?

  • A. 以清洗后的为准
  • B. 要求 AI 保持书名原文,不截断不改写
  • C. 把书名列删掉
  • D. 自己手动补一段
答案:B。书名是事实性字段,任何改写都会污染数据。发现被改就应该要求还原原文。

8同时保留「定价」「当当价」两列,最主要的用途是?

  • A. 凑字段数
  • B. 方便生成报告
  • C. 提高采集速度
  • D. 交叉核对:当当价 ÷ 定价 应等于折扣率
答案:D。两列与折扣之间有数学关系,可以用来互相校验,一旦对不上就说明取数出错。

9把关键词写进采集文件名,主要好处是?

  • A. 文件名更好看
  • B. 避免同一批次的多个关键词互相覆盖
  • C. 可以少导出一列
  • D. 能让文件更小
答案:B。同一天采多个关键词时,关键词入名是最简单可靠的区分方式。

10采集电商数据用于课程分析,下面哪一项越界了?

  • A. 统计某关键词下图书的价格分布
  • B. 采集书名与价格做比价
  • C. 统计各出版社的图书数量
  • D. 抓取买家昵称与手机号
答案:D。买家昵称、手机号属于个人信息,不在公开商品信息范围内,任何情况下都不应采集。