一、案例背景与采集目标
票房榜是天然的「时间序列」素材:同一部电影,今天累计多少、昨天累计多少,一减就是当天的增量;连续采上一周,就能画出一条漂亮的票房曲线。它也是少见的、每天都会变、而且变化有规律的公开榜单。
这一篇的示范站点是 猫眼专业版 · 票房榜,网址 https://piaofang.maoyan.com/dashboard。它的日票房榜给出每部影片的当日票房、累计票房、排片占比与上座率,字段排得整整齐齐;影片评分可对照 豆瓣电影(https://movie.douban.com/)的条目页。这一篇还要顺带练一样新本事——图片采集:从https://movie.douban.com/top250把 250 部经典影片的排名、评分连同海报原图一起采下来,交付的不只是表格,还有一个图片文件夹。
1.1 这个案例要拿到什么
- 某日票房榜的排名、影片名、上映日期、累计票房、当日票房、排片占比、上座率;
- 每部影片的评分与评分人数(来自评分平台);
- 从豆瓣电影 Top250 取回排名、片名、评分、评价人数、年份与类型,并把海报原图逐张下载成图片文件夹;
- 把票价与票房统一单位,另存一列保留页面原文写法;
- 把每日快照按采集日期存档,形成一份多天的榜单;
- 用「今天累计 − 昨天累计」还原单日票房增量,再与页面当日票房对照。
1.2 这个案例的难点在哪
| 难点 | 具体表现 | 对策 |
|---|---|---|
| 票房单位不统一 | 有的写「12.3 亿」,有的写「4567 万」 | 统一换算成万元,另存一列注明原始写法 |
| 累计与单日混淆 | 「累计票房」和「当日票房」两列容易看错 | 明确列名,绝不互换 |
| 榜单每天在变 | 今天的排名明天就变了 | 必须新增「采集日期」列,作为快照的主键之一 |
| 票房是动态数据 | 同一部片今天和明天的数字都不一样 | 只采「截至当前」的值并记下采集时刻,不要试图追求「实时」 |
| 评分人数也在变 | 评分和人数每天小幅变化 | 每份快照都记下当时的值,不要覆盖 |
1.3 采集路线与边界
票房与评分属于面向公众公开展示的榜单信息,可作示范。但票房数据本身有权利人——它由专业数据平台统计发布:采集结果用于课堂分析没问题,把它整理成「独家票房数据」对外发布、或用于商业用途,就越界了。
目标站点与交付产物
下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。
| 项目 | 内容 |
|---|---|
| 示范站点 | 猫眼专业版 · 票房榜 https://piaofang.maoyan.com/dashboard 榜单页结构清晰,日票房/累计票房/排片占比字段齐全 |
| 延伸站点 |
|
| 交付产物 |
|
| 难度 | ★★☆ 中 |
| 合规提示 | 票房数据版权归专业数据平台,教学仅限学习研究;评分平台有反爬条款,示范以低频演示为主。 |
二、数据源与字段设计
目标站点:猫眼专业版 · 票房榜,网址 https://piaofang.maoyan.com/dashboard。
| 项目 | 内容 |
|---|---|
站点名称 | 猫眼专业版 · 票房榜(日票房榜) |
入口网址 | https://piaofang.maoyan.com/dashboard(榜单按日更新,可按日票房 / 累计票房切换排序) |
页面形态与接口 | 榜单页结构清晰,日票房、累计票房、排片占比、上座率字段齐全;页面每日更新,属动态数据 |
实际规模 | 榜单每日入库影片几十部,头部影片的累计票房可到数十亿元级 |
延伸站点 | 豆瓣电影 · Top250 https://movie.douban.com/top250(经典榜单+海报图片,练图片采集)、豆瓣电影排行榜 https://movie.douban.com/chart、中国电影数据信息网 https://www.zgdypw.cn/(国家电影专资办,官方票房数据源)、网易云音乐 · 热歌榜 https://music.163.com/discover/toplist?id=3778678(见 5.3 延伸采集:歌曲元数据+封面图+歌词文件) |
2.1 完整字段表(12 个字段)
下表就是本案例的验收标准。其中「累计票房原文」与「采集日期」是这一案的两张「保险」:前者防止单位换算出错,后者让多天快照能拼成时间序列。
| 字段名 | 字段含义 | 示例值 | 口径与备注 |
|---|---|---|---|
采集日期 | 快照采集的日期 | 2026-10-08 | 快照主键之一,多天数据靠它区分 |
排名 | 榜单名次 | 1 | 以榜单上的名次为准 |
影片名 | 电影名称 | 长空之上 | 保留榜单原文,作为影片主键 |
上映日期 | 首次上映日 | 2026-09-28 | 做档期分析 |
累计票房 | 上映至今累计票房(万元) | 123456.7 | 统一换算成万元;存量指标 |
累计票房原文 | 页面上的原始票房写法 | 12.35 亿 | 照录,便于核对单位换算 |
当日票房 | 当日票房(万元) | 8765.4 | 统一换算成万元;流量指标 |
排片占比 | 当日排片场次占比(%) | 32.5 | 只留数字,另记口径为百分比 |
上座率 | 当日场次上座率(%) | 18.6 | 只留数字,另记口径为百分比 |
评分 | 观众评分 | 8.6 | 注明评分制式(10 分制 / 5 分制) |
评分人数 | 参与评分的人数 | 152340 | 热度指标,随上映天数增长 |
档期 | 所属档期 | 国庆档 | 按上映日期归入 春节档 / 暑期档 / 国庆档 / 其他 |
2.2 单位与口径(三句话记牢)
- 票房统一换算成万元。「12.3 亿」= 123000 万;「4567 万」= 4567;「万」与「亿」混在一张表里没法比大小,所以「12.35 亿」要写成「123500」。
- 「累计票房」是存量,「当日票房」是流量。前者像银行余额,后者像当天流水;两者不能相加,也不能混用。
- 采集日期是快照的身份证。没有这一列,多天的榜单叠在一起就分不清哪行是哪天的。
课程思政|工匠精神与严谨求实 · 亿和万之间,差了一万倍
「12.3 亿」写成 12.3、「4567 万」也写成 4567,两个数放在一起排序,结论会错得离谱——因为中间差了一万倍。数据工作里最不起眼的单位换算,往往就是成败分界线。做数据的人,对数量级要有本能的敏感。
AI 助手小贴士|榜单类页面常有「实时榜」「日榜」「周榜」多个口径,先让 AI 说清它采的是哪一个,再动手。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请先告诉我猫眼专业版这个票房页上一共有几种榜单(实时、日榜、周榜等),各自的口径是什么,先不要采集。
三、零代码操作步骤
工具与技能|先看清三个角色,再动手
本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。
| 角色 | 负责什么 | 在本案例里具体做什么 |
|---|---|---|
| 你 | 确认字段清单、验收结果、清洗与合规把关 | 盯字段清单、核对结果、处理异常(如验证码) |
| WorkBuddy | 接中文指令:探字段 → 批量采 → 清洗 → 导出交付物 | 拆解本篇的采集任务并跑完全量、产出交付物 |
| 浏览器技能 BrowserSkill | 以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理 | 打开票房榜取当天快照——本案例要连续几天各采一次,才能做出时间序列 |
五步操作主线(全课程统一,每一篇都按这个顺序推进):
- 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
- 现场踩点(浏览器技能 BrowserSkill):打开
https://piaofang.maoyan.com/dashboard,确认排名、累计票房、当日票房、排片占比、上座率这几列都在。 - 小样试采(WorkBuddy):先采今天的快照并立即存档(文件名带日期)。
- 核对与清洗:① 单位有没有统一成万元(别把「亿」当「万」算);② 文件名是不是带了日期;③ 两天的快照能不能按「影片名 + 采集日期」合并。
- 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
用浏览器技能 BrowserSkill 打开 https://piaofang.maoyan.com/dashboard(猫眼专业版 · 票房榜),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。下面是在 WorkBuddy 里完成本案例的完整流程。本案例需要连续几天各采一次,才能做出时间序列。
- 新建对话,粘贴提示词,网址用
https://piaofang.maoyan.com/dashboard。 - 先采今天的快照。确认排名、累计票房、当日票房、排片占比、上座率都取到了。
- 检查单位。让 AI 说明每列原始单位,并统一换算成万元。看有没有把「亿」当成「万」。
- 存档第一份快照。导出为带日期后缀的文件,比如
boxoffice_20261008.xlsx。 - 第二天再采一次,文件名改成
boxoffice_20261009.xlsx,其余规则不变。 - 顺带练图片采集。打开豆瓣电影 Top250
https://movie.douban.com/top250,让它把 250 部影片的海报原图下载到posters/文件夹,文件名用「排名_片名.jpg」,同时记一张「排名、片名、评分、评价人数、年份、海报文件名」的清单表——数据表和图片靠文件名对得上。 - 合并多天快照。说「把两天的快照按「影片名 + 采集日期」合并成一张长表」。
- 还原单日增量。说「对每部影片按采集日期排序,用今日累计减去昨日累计,得到计算单日票房」。
- 核对并保存。对比「计算单日票房」与「当日票房」,差异大的找原因后归档。
四、提示词模板与追问技巧
下面这段可以直接复制。注意:网址写全、把单位换算与快照日期交代死、只采榜首若干名。
请帮我采集猫眼专业版的电影票房榜,做一张带采集日期的榜单快照表。
【目标站点】https://piaofang.maoyan.com/dashboard
这是猫眼专业版的票房榜页面,按日更新。请采「日票房榜」这个口径,
不要采实时榜,也不要采周榜,并在结果里注明采的是哪一种榜单。
【采集范围】榜单前 10 名,只采一次快照。
【需要字段】按这个顺序:
1. 采集日期(今天,格式 2026-10-08)
2. 排名
3. 影片名
4. 上映日期
5. 累计票房(统一换算成万元,只留数字)
6. 累计票房原文(照录页面写法,如 12.35 亿)
7. 当日票房(统一换算成万元,只留数字)
8. 排片占比(%,只留数字)
9. 上座率(%,只留数字)
10. 评分(注明是 10 分制还是 5 分制)
11. 评分人数
12. 档期(按上映日期归入 春节档 / 暑期档 / 国庆档 / 其他)
【口径要求】
- 票房单位统一成万元:「12.35 亿」换算成 123500;「4567 万」换算成 4567
- 保留「累计票房原文」列,便于我核对换算
- 「累计票房」和「当日票房」不要互换
- 影视票房属动态数据,只采「截至采集时刻」的值,不要追求实时
【执行要求】
- 只采前 10 名,不要采全榜
- 固定每天同一时间采一次,不高频轮询;遇验证码立即停止
- 导出为 boxoffice_20261008.xlsx(日期用采集当天)
4.1 三条常用追问指令
追问一(单位核对):
请把每一部的「累计票房原文」和换算后的万元值并排列出来,
让我核对有没有把「亿」当成「万」的情况。
追问二(合并多天快照):
我这两天各采了一份快照,请按「影片名 + 采集日期」合并成一张长表,
同一天同一部影片只保留一条。
追问三(还原单日增量):
请对每部影片按采集日期排序,新增一列
「计算单日票房」= 今日累计 − 昨日累计;
再和页面的「当日票房」对比,差异超过 10% 的单独列出。
AI 助手小贴士|多天快照合并后,最常见的坑是「影片名拼写不一致」,比如同一部片一天写全称、一天写简称。可以让 AI 做一次影片名去重比对。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请把所有出现过的影片名去重列出来,检查有没有同一部影片出现两种写法,先不要合并。
五、结果核对、清洗与保存
采集到的快照结果样例(节选,示例数据:影片名与票房为虚构示意,非真实榜单;实际采集以当日榜单为准):
| 采集日期 | 排名 | 影片名 | 上映日期 | 累计票房 | 累计票房原文 | 当日票房 | 排片占比 | 上座率 | 评分 |
|---|---|---|---|---|---|---|---|---|---|
| 2026-10-07 | 1 | 长空之上 | 2026-09-28 | 114691.3 | 11.47 亿 | 8765.4 | 32.5 | 19.2 | 8.6 |
| 2026-10-08 | 1 | 长空之上 | 2026-09-28 | 123456.7 | 12.35 亿 | 8765.4 | 31.8 | 18.6 | 8.6 |
| 2026-10-07 | 2 | 山海行记 | 2026-09-30 | 78234.0 | 7.82 亿 | 5420.1 | 24.1 | 16.8 | 8.2 |
| 2026-10-08 | 2 | 山海行记 | 2026-09-30 | 83654.1 | 8.37 亿 | 5420.1 | 23.5 | 16.1 | 8.2 |
5.1 四步清洗,一句话一条
① 单位复核:
重新核对「累计票房」是否统一为万元;与「累计票房原文」逐条比对。
② 排序与主键:
按「影片名 + 采集日期」排序,同一天同一部影片只保留一条。
③ 还原单日增量:
新增一列「计算单日票房」= 当日累计 − 上一采集日累计;
首日没有前一天的,该列留空并备注。
④ 差异核对:
把「计算单日票房」与「当日票房」相比差异超过 10% 的记录单独输出,
并列出可能原因(口径不同 / 更新时间不同 / 含预售)。
5.2 保存与归档
boxoffice_20261008.xlsx 当天快照(原始保留)
boxoffice_20261009.xlsx 次日快照(原始保留)
boxoffice_merged_clean.xlsx 合并长表(含计算单日票房列)
boxoffice_trend.xlsx 趋势表:影片 × 采集日期的票房矩阵
boxoffice_log.txt 日志:采集时间点、榜单口径、条数
5.3 延伸采集(选做):网易云音乐 · 热歌榜——把「音频内容」采成表、图、文
音频类内容也是常见的采集对象。示范站点是 网易云音乐 · 热歌榜,榜单页 https://music.163.com/discover/toplist?id=3778678,它背后有一个公开的榜单接口 https://music.163.com/api/playlist/detail?id=3778678,浏览器直接打开就能看到结构化 JSON(含 200 首歌的完整清单)。合规口径先说清楚:只采公开的榜单元数据、专辑封面图与歌词文本三样;歌曲音频文件本身受版权保护,一律不下载、不转存——这条红线比票房案例更硬。
| 字段名 | 字段含义 | 示例值 | 口径与备注 |
|---|---|---|---|
排名 | 榜单名次 | 1 | 热歌榜每日更新,按榜单原序 |
歌名 | 歌曲名称 | 我不难过 | 接口 name 字段 |
歌手 | 演唱者 | 孙燕姿 | 多人合唱用「/」连接,如「梨冻紧/Wiz_H张子豪」 |
专辑 | 所属专辑 | 未完成 | 接口 album.name 字段 |
时长 | 歌曲时长(秒) | 320 | 接口给毫秒,统一除以 1000 取整 |
热度 | 平台热度值 | 100 | 0~100 的归一化数值,作排序参考 |
封面地址 | 专辑封面图 URL | p1.music.126.net/… | 接口 album.picUrl,可逐张下载 |
歌词文件 | 歌词文本文件名 | 1_我不难过.lrc | 歌词接口按歌曲 id 取 LRC 文本,存入 lyrics/ |
采集日期 | 榜单快照日期 | 2026-10-09 | 榜单天天变,快照必须记日期 |
歌词接口 https://music.163.com/api/song/lyric?id=186016&lv=1 返回带时间戳的 LRC 文本。这正是练正则提取的好材料——LRC 的时间戳格式非常规整,用一条正则就能把「时间 → 歌词行」拆开:
LRC 原文(节选,歌曲 id 186016):
[00:00.000] 作词 : 周杰伦
[00:01.000] 作曲 : 周杰伦
…
[00:28.950]故事的小黄花
[00:32.380]从出生那年就飘着
正则:\[([0-9]{2}):([0-9]{2})\.([0-9]{3})\]
拆出:分 00 秒 28 毫秒 950 → 00:28 后面跟歌词内容
按这个思路把每首歌的歌词存成 lyrics/排名_歌名.lrc,
再让 WorkBuddy 用正则统计「哪句歌词被重复唱得最多」。
AI 助手小贴士|如果某一天漏采了,趋势会出现断点。做差时一定要按「相邻的两个采集日期」来算,而不是简单地「上一行减上一行」。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请检查我的快照有没有漏采的日期,并按相邻采集日期计算增量,漏采造成的断点在备注里标出来。
课程思政|数据安全与法治素养 · 榜单有主,结论有据
票房数据由专业机构统计发布,有明确的来源和权利人。我们可以在课堂上分析它、画它的趋势图,但要在报告中写清数据来源,不能改头换面当成自己整理发布的权威数据。尊重数据来源,是最基本的职业素养。
六、常见问题与合规红线
6.1 这个站点上最容易踩的五个坑
| 现象 | 原因 | 怎么处理 |
|---|---|---|
| 票房数字差了一万倍 | 「亿」与「万」混用没有统一 | 统一换算成万元,并保留原文列核对 |
| 做差算出的单日票房是负数 | 排序错了,或累计票房采错 | 按采集日期正序排序后重算,核对原始值 |
| 两天快照合并后条数翻倍 | 没有以「影片名 + 采集日期」为主键 | 按双主键去重 |
| 同一部影片有两种名字 | 不同页面写法不一致 | 做影片名去重比对,统一后再合并 |
| 评分人数每天都在小幅变化 | 人数本来就随时间增长 | 这是正常现象,每份快照各记各的,不要覆盖 |
6.2 三条合规红线(每个案例都要过一遍)
- 只采公开榜单。票房榜与评分是公开信息,可采;但不要试图获取需要付费或登录的专业数据服务内容。
- 控制频率。票房榜每天更新一两次,每天固定时间采一次即可,不要高频轮询。
- 注明来源。分析结论对外展示时,必须写清数据来源与采集时间,不冒充权威发布。
课程思政|科技自立自强 · 让数据说话,让判断有据
一部电影好不好、一个市场火不火,靠感觉争论没有尽头,把票房和评分按天排出来一看便知。用数据支撑判断,是现代社会的通用能力,也是各行各业走向精细化的基础。掌握这种能力,就是给自己加了一份底气。
七、随堂自测(10 题)
点击选项即可判分,答错的题会立刻显示解析。
1票房列里同时出现「12.3 亿」和「4567 万」,第一步应该做什么?
- A. 统一换算成同一个单位(如万元)
- B. 直接按数字排序
- C. 把「亿」那列删掉
- D. 只保留最大的那个数
2「累计票房」和「当日票房」的区别是?
- A. 两者完全相同
- B. 前者是当天新增,后者是总数
- C. 前者是上映至今的总量,后者是当天新增量
- D. 前者指的是排片,后者指的是上座
3为什么每份快照都必须有「采集日期」这一列?
- A. 让表看起来更完整
- B. 作为快照的主键,区分不同天的数据
- C. 方便排序
- D. 这是平台的硬性要求
4用「今日累计 − 昨日累计」得到的值,与页面的「当日票房」不一致,合理的态度是?
- A. 说明数据是假的
- B. 直接把页面值改成计算值
- C. 删掉计算列
- D. 先弄清差异原因,再决定用哪一个口径
5做单日增量时,最容易被忽略的前提是?
- A. 票房单位
- B. 采集时间点要固定,且按采集日期正确排序
- C. 影片名长短
- D. 评分高低
6连续采了五天快照,某一天漏采了,正确的做法是?
- A. 如实标注断点,按相邻实际采集日期计算增量
- B. 用前后两天的平均值补上
- C. 把漏的那天数据复制一份
- D. 从头重采整月数据
7采集网易云音乐热歌榜时,下面哪种做法符合本案例的合规口径?
- A. 把歌曲音频文件批量下载下来分享给同学
- B. 顺带把歌手的照片和隐私信息也整理进表
- C. 只采榜单元数据、专辑封面图与歌词文本,音频本体一律不下载
- D. 用脚本把整站歌单一夜抓完
8评分和评分人数每天小幅变化,应该怎么处理?
- A. 只保存最后一天的值
- B. 每天取平均
- C. 把变化抹平
- D. 每份快照各记各的,保留每天的原始值
9关于票房数据的使用,下面哪一条越界了?
- A. 课堂上分析票房趋势
- B. 把整理后的数据包装成「权威发布」对外传播
- C. 在报告中标注数据来源
- D. 统计某类型影片的票房占比
10榜单每天更新一两次,合理的采集节奏是?
- A. 每天固定时间采一次
- B. 每小时采一次
- C. 每分钟采一次以保证实时
- D. 想起来就采