一、案例背景与采集目标
案例 10 我们拿到了商品清单,看到的是商家想让你看到的信息:书名、价格、评论数。但一本书到底好不好看,答案往往藏在短评区里。
本案例把目标从当当的图书列表,换到豆瓣读书的短评页。示范条目是豆瓣读书编号 1084336 的那本书,短评页地址 https://book.douban.com/subject/1084336/comments/。页面上每条短评带一句话点评、档位评价(力荐 / 推荐 / 还行 / 较差 / 很差)和「有用」数。我们采集短评正文与评价档位,再做一个简单的情感倾向统计,算出好评率,看看读者的情绪偏向哪一边。
1.1 这个案例要拿到什么
- 该条目短评区翻若干页的短评条目(每页 20 条);
- 每条短评:正文、评价档位(力荐/推荐/还行/较差/很差)、评价时间、「有用」数;
- 把短评正文清洗成纯文本(去表情、去重复标点、去无意义字符);
- 用关键词词典做一次正负倾向统计,给出好评率,并说明方法的局限。
1.2 难点:短评页比列表页更难缠
| 难点 | 具体表现 | 对策 |
|---|---|---|
| 短评是翻页的 | 页尾有「后页」链接,网址里 start= 参数每页加 20 | 明确要求「按 start 递增翻页,直到没有下一条短评」 |
| 正文里混着表情和符号 | 「[给力]」「~~」「^_^」等 | 清洗成纯文本,只保留中文、数字和常用标点 |
| 评价档位是文字 | 「力荐」「推荐」「还行」「较差」「很差」 | 统一映射成 5 / 4 / 3 / 2 / 1 的整数分 |
| 情感判断只是近似 | 关键词词典会误判反讽与否定 | 说清这是最粗略的近似,不是真正的模型 |
目标站点与交付产物
下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。
| 项目 | 内容 |
|---|---|
| 示范站点 | 豆瓣读书 · 短评 https://book.douban.com/subject/1084336/comments/ 评论分页结构清晰、文本长度适中,适合做情感倾向统计 |
| 延伸站点 |
|
| 交付产物 |
|
| 难度 | ★★☆ 中 |
| 合规提示 | 评论内容是用户生成内容,采集后只做统计分析,不得逐条转载;不得采集用户 ID 与个人主页做画像。 |
二、数据源与字段设计
数据源就一个页面:豆瓣读书短评页,地址 https://book.douban.com/subject/1084336/comments/。它按时间倒序列出短评,页尾有「后页」入口,网址里的 start= 参数控制起始序号,是典型的参数式分页。
2.1 站点信息
| 项目 | 内容 |
|---|---|
| 站点全称 | 豆瓣读书(book.douban.com),国内主流的图书评分与短评社区 |
| 示范网址 | https://book.douban.com/subject/1084336/comments/ |
| 页面形态 | 服务端渲染的列表页,无需登录即可看到前若干页短评 |
| 分页方式 | 网址参数 start= 每次增加 20,如 ?start=0、?start=20、?start=40 |
| 每页条数 | 20 条短评,含正文、评价档位、时间、「有用」数 |
| 访问约束 | 豆瓣对访问频率较敏感,务必低频(每条页面间隔 3 秒以上),出现登录墙或验证码立即停止 |
2.2 延伸站点(只讲原理与合规边界)
| 站点 | 网址 | 教学用途 |
|---|---|---|
| 京东商品评价 | https://search.jd.com/Search?keyword=小王子 | 从搜索结果进商品详情页看评价区,有「查看更多」需点开加载;脚本访问会触发验证,用浏览器打开 |
| 大众点评商户评价 | https://www.dianping.com/guangzhou | 强反爬,只讲原理 |
| 黑猫投诉 | https://tousu.sina.com.cn/ | 投诉文本,负面语料丰富,可作对照 |
2.3 完整字段表(12 个字段)
| 字段名 | 字段含义 | 示例值 | 口径与备注 |
|---|---|---|---|
序号 | 短评在结果里的顺序 | 1 | 从 1 开始,按页面顺序 |
条目编号 | 豆瓣图书条目 id | 1084336 | 与图书表关联用,来自网址 |
书名 | 被评价图书名 | 小王子 | 从短评页标题取,用于核对没采错页 |
短评正文 | 短评内容原文 | 故事线铺得很稳,读到最后才明白书名。 | 保留原文,另存清洗版 |
正文清洗 | 去表情去符号后的文本 | 故事线铺得很稳,读到最后才明白书名。 | 再做情感统计用这一列 |
评价档位 | 豆瓣原始档位文字 | 推荐 | 力荐/推荐/还行/较差/很差 |
评价分值 | 档位映射成的整数分 | 4 | 力荐5 推荐4 还行3 较差2 很差1 |
有用数 | 多少人点「有用」 | 128 | 数字型,可作为情感权重 |
评价时间 | 短评发表时间 | 2026-09-21 14:03 | 统一成 YYYY-MM-DD HH:MM |
页码 | 该条来自第几页 | 1 | 便于定位与续采;也可换算成 start 值 |
情感倾向 | 词典法判定结果 | 正向 | 正向/负向/中性 |
情感得分 | 正向词数减负向词数 | 2 | 用于排序,正数偏正向 |
2.4 五种评价档位,统一成一个数
| 页面档位文字 | 分值 | 说明 |
|---|---|---|
| 力荐 | 5 | 最高档 |
| 推荐 | 4 | 次高档 |
| 还行 | 3 | 中评 |
| 较差 | 2 | 低档 |
| 很差 | 1 | 最低档 |
2.5 正文清洗规则
清洗目标:把短评正文变成一句干净的话。
1. 去掉表情符号与颜文字,如 [给力]、~~、^_^;
2. 去掉连续的重复标点,如「!!!」→「!」;
3. 去掉首尾空白与多余换行;
4. 繁体转简体,全角标点统一为半角;
5. 空短评(只有符号没有文字)整条剔除,并记录条数。
示例(示例数据):
原文:故事写得好!!!读到最后才懂[给力][给力] 值得一读~~
清洗:故事写得好!读到最后才懂 值得一读
AI 助手小贴士|豆瓣短评页翻页是「网址参数 +20」。不要等它自己判断翻到哪,直接告诉 AI 要翻到第 5 页、或者一直翻到没有下一条为止。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:这个短评页靠网址里的 start 参数翻页,请一直翻到没有下一条短评为止,然后用核对告诉我一共采到多少条。
课程思政|工匠精神与严谨求实 · 关键词统计只是近似
用「好」「差」几个词数一数就算情感,看着省事,其实很粗糙:反讽、否定、双重否定都会误判。做数据的人要清楚自己方法的短板在哪,并把局限写在结论旁边——承认不确定,比假装精确更专业。
三、零代码操作步骤
工具与技能|先看清三个角色,再动手
本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。
| 角色 | 负责什么 | 在本案例里具体做什么 |
|---|---|---|
| 你 | 确认字段清单、验收结果、清洗与合规把关 | 盯字段清单、核对结果、处理异常(如验证码) |
| WorkBuddy | 接中文指令:探字段 → 批量采 → 清洗 → 导出交付物 | 拆解本篇的采集任务并跑完全量、产出交付物 |
| 浏览器技能 BrowserSkill | 以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理 | 打开短评页并翻页,确认翻页参数的步长 |
五步操作主线(全课程统一,每一篇都按这个顺序推进):
- 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
- 现场踩点(浏览器技能 BrowserSkill):打开
https://book.douban.com/subject/1084336/comments/,确认翻页参数是什么、每次加多少(?start=0、20、40…)。 - 小样试采(WorkBuddy):只采
?start=0这一页,确认正文、档位、时间、「有用」数四列都能取到。 - 核对与清洗:① 页面上的短评总数与采到的条数对得上吗(差了多半是没翻完);② 评价档位是不是都映射成了 1~5 的整数;③ 正文有没有混进按钮文字。
- 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
用浏览器技能 BrowserSkill 打开 https://book.douban.com/subject/1084336/comments/(豆瓣读书 · 短评),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。整个过程仍然在 WorkBuddy 里用中文对话完成。
- 新建对话,粘贴提示词(见下一节),把短评页地址原样粘进去。
- 先采一页试水。说「先只采
?start=0这一页」,确认正文、档位、时间、「有用」数四列都能取到。 - 检查翻页。数一数页面上显示的短评总数,和采到的条数比一比,差了多半是没翻完
start参数。 - 处理评价档位。看评价分值列是不是全是 1~5 的整数,出现「力荐」这类文字要让它映射成 5。
- 批量翻页。说「继续按 start=20、40、60 采第 2~4 页并合并,按「评价时间 + 短评正文」去重」。
- 清洗正文。让它按清洗规则生成「正文清洗」列。
- 做情感统计。让它用正负关键词表算出好评率,并说明统计口径。
四、提示词模板与追问技巧
下面这段可以直接复制。豆瓣对频率敏感,提示词里把「间隔 3 秒」写进去。
请帮我完成一个图书短评采集任务。
【目标页面】豆瓣读书短评页,网址:https://book.douban.com/subject/1084336/comments/
【条目编号】1084336
【采集范围】短评第 1 页(start=0),先只采这一页给我验证
【翻页方式】网址里 start 参数每次加 20
【需要字段】按这个顺序:
1. 序号(从 1 开始)
2. 条目编号
3. 书名
4. 短评正文(原文,不要改写)
5. 正文清洗(去表情、去重复标点、去空行后的文本)
6. 评价档位(豆瓣原文:力荐/推荐/还行/较差/很差)
7. 评价分值(1~5 的整数:力荐5 推荐4 还行3 较差2 很差1)
8. 有用数(整数)
9. 评价时间(格式 2026-09-21 14:03)
10. 页码(这条来自第几页)
11. 情感倾向(正向/负向/中性,由关键词词典判定)
12. 情感得分(正向词数 − 负向词数)
【执行要求】
- 先采第 1 页给我确认,再继续第 2~4 页(start=20、40、60)
- 每条页面之间间隔 3 秒以上,不要并发,出现验证码立即停止
- 不要采集评论者的昵称与主页
- 结果导出为 review_1084336_20261009.xlsx
4.1 追问与情感统计指令
追问一(补翻页):
页面上显示这本书共有 4000 多条短评,但你只采到 20 条,
请按 start 参数继续翻页,采满 4 页后再合并。
追问二(统一档位):
第 3、8 条的评价档位是「力荐」「很差」这样的文字,
请统一映射成 5 和 1 的整数分。
追问三(情感统计):
请在结果里把「情感倾向」和「情感得分」两列补齐,规则如下:
- 正向词:好、喜欢、满意、值得、推荐、精彩、感动、喜欢
- 负向词:差、失望、无聊、拖沓、晦涩、烂、不好
- 每个词出现一次计 1 分,正分多于负分记为正向,反之记为负向,相等记为中性
请最后给我一个好评率 = 正向条数 ÷ 全部条数(保留一位小数),
并说明这个方法的局限。
AI 助手小贴士|做完统计,务必让 AI 顺手告诉你哪些短评被误判了。抽取几条「正向与负向都出现」的短评人工看看,你就能体会到词典法的局限。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请挑出 5 条正向词和负向词都出现的短评,标出它们被判成了什么,并告诉我为什么可能误判。
五、结果核对、清洗与保存
结果样例(节选,均为示例数据):
| 序号 | 短评正文 | 正文清洗 | 评价档位 | 评价分值 | 有用数 | 评价时间 |
|---|---|---|---|---|---|---|
| 1 | 故事写得好!!!读到最后才懂[给力] 值得一读~~ | 故事写得好!读到最后才懂 值得一读 | 力荐 | 5 | 128 | 2026-09-21 14:03 |
| 2 | 还行,中段节奏偏慢,但结尾收得住。 | 还行,中段节奏偏慢,但结尾收得住。 | 还行 | 3 | 42 | 2026-09-21 11:47 |
| 3 | 翻译生硬,读起来很累,不太推荐。 | 翻译生硬,读起来很累,不太推荐。 | 较差 | 2 | 19 | 2026-09-20 20:15 |
| 4 | 平凡的故事,却写出了不平凡的力量,推荐。 | 平凡的故事,却写出了不平凡的力量,推荐。 | 推荐 | 4 | 76 | 2026-09-20 09:32 |
5.1 情感统计结果长什么样
| 指标 | 数值 | 说明 |
|---|---|---|
| 总短评数 | 4180 | 示例数据 |
| 正向条数 | 3052 | 按关键词规则判定 |
| 负向条数 | 688 | 按关键词规则判定 |
| 中性条数 | 440 | 正负分相等或无关键词 |
| 好评率 | 73.0% | 正向 ÷ 全部,保留一位小数 |
| 平均分值 | 4.2 | 评价分值列均值 |
5.2 清洗与保存
① 去重:
按「评价时间 + 短评正文」去重。
② 剔除无意义短评:
纯符号、纯表情、只有一个字的短评单独列一份清单,
主表里剔除,并记录剔除了多少条。
③ 补时间列:
新增「采集日期」,统一填今天。
review_1084336_20261009.xlsx ← 明细表(原文 + 清洗版 + 档位)
review_1084336_20261009_clean.xlsx ← 清洗后(去重、剔除空短评)
review_1084336_20261009_stats.xlsx ← 统计表(好评率、平均分、词频)
review_1084336_20261009_log.txt ← 日志:页数、条数、剔除数、异常
AI 助手小贴士|把正向、负向被命中的关键词频次也导出来,你就能看出这份统计的「证据」长什么样,比只看一个好评率可信得多。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请统计所有命中的正向词和负向词各出现了多少次,按频次从高到低给我一张表。
课程思政|数据安全与法治素养 · 评论可以读,人不该被记住
短评区是一个个真实读者写下的感受。做分析时,我们关注的是「大家怎么说」,而不是「谁在说」。不保存昵称、不关联个人身份、不外传原始短评,是每个采集者应有的分寸——数据研究的对象是现象,不是个人。
六、常见问题与合规红线
| 现象 | 原因 | 怎么处理 |
|---|---|---|
| 短评条数远少于页面显示的总数 | 没有按 start 参数翻完页 | 要求「一直翻到没有下一条,并核对总数」 |
| 同一批短评出现了两次 | 分页有重叠 | 按「评价时间 + 短评正文」去重 |
| 评价分值列里混着「力荐」 | 档位未统一映射 | 把映射规则写进提示词并抽查 |
| 正文里还残留 [给力]、~~ 等符号 | 清洗规则不完整 | 补充规则重新清洗,保留原文列对照 |
| 好评率算出来高得离谱 | 好评率分母口径没定义清楚 | 明确「正向 ÷ 全部」还是「正向 ÷ (正+负)」 |
| 页面上出现登录框或验证码 | 访问频率过高触发了风控 | 立即停止,加大间隔;仍然失败就换数据源 |
6.1 三条合规红线
- 不采个人信息。只保留短评正文、评价档位、时间、「有用」数;评论者昵称、主页链接一律不留。
- 不做人身攻击分析。情感统计的结论只针对图书与内容,不针对任何具体的人。
- 原始短评不外传。课堂内分析可以,打包外发或二次发布前必须获得授权并脱敏。
课程思政|诚信与职业操守 · 别让一个数字替所有人说话
「好评率 73.0%」看起来很客观,但它背后是一套粗糙的关键词规则。把近似当成精确、拿一个统计数字去否定真实的阅读体验,是数据时代常见的不诚实。诚实的态度是:给出数字,也给出它的来历与边界。
七、随堂自测(10 题)
点击选项即可判分,答错的题会立刻显示解析。
1本案例中,情感倾向统计用的是什么方法?
- A. 训练一个深度学习模型
- B. 正负关键词词典作简单计数
- C. 人工逐条阅读打分
- D. 爬取其他平台的评分
2豆瓣短评页靠网址里的 start 参数翻页,正确的采集方式是?
- A. 一直按 start 递增翻页到没有下一条为止
- B. 只采首页的短评
- C. 假装它不存在
- D. 随便点两次
3短评正文「故事写得好!!!读到最后才懂[给力]~~」清洗后应该是?
- A. 原样保留
- B. 直接删掉这一条
- C. 故事写得好!读到最后才懂
- D. 只留「故事写得好」
4某条短评的评价档位缺失,正确的处理是?
- A. 统一填 0
- B. 随便补一个档位
- C. 整条删除
- D. 评价分值留空并单独记录原因
5下面哪一句话最可能被词典法误判?
- A. 一点都不好看,不推荐
- B. 故事很精彩,很感动
- C. 翻译生硬,读得累
- D. 内容扎实,值得买
6计算好评率之前,最该先明确的是?
- A. 短评的字体大小
- B. 好评率的分母是什么
- C. 网站的服务器位置
- D. 用什么颜色的图表
7关于短评采集的合规边界,正确的是?
- A. 可以采集评论者昵称与主页
- B. 可以随意转发原始短评
- C. 可以给评论者画像并公开
- D. 只采正文、档位、时间、有用数,不留个人信息
8把「力荐/推荐/还行/较差/很差」统一成 1~5 的整数,是为了?
- A. 让表格更好看
- B. 减少文件体积
- C. 方便计算平均分与做统计
- D. 避免版权问题
9情感统计结果里的「好评率 73.0%」,发布时还应该带上什么?
- A. 方法说明与局限提示
- B. 只带数字最简洁
- C. 配一张好看的图
- D. 什么都不用带
10去重时,比「按序号」更可靠的依据是?
- A. 短评的排序
- B. 短评的字数
- C. 短评的颜色
- D. 评价时间 + 短评正文