04Bread Browser · 第 5 章
总进度 26 / 33采集引言并整理成 JSON
上一章通过登录练习了多步操作。这一章继续加入读取正文和整理结果,完成一项数据采集任务:
2026-09-28约 50 分钟430 行代码难度 ★★★
如果想获取全套课程资料,请关注微信公众号 「AI面包君」,回复 「课程资料」 即可领取。
1. 从操作页面到收集完整数据
上一章通过登录练习了多步操作。这一章继续加入读取正文和整理结果,完成一项数据采集任务:
"去 quotes.toscrape.com 把 humor 标签下所有引言抓下来,存成 JSON。"
要做的事:
- 找到 humor 标签的链接
- 点进去
- 读出页面里所有引言(不止 1 条)
- 读出每条引言的作者
- 把数据组装成 JSON 返回
挑战:
- 引言不是 button 不是 a ——它们是普通
<span>。ch03 的 click/type 工具读不到 - 需要 agent 自己拼装结构化数据
ch04 加 3 个工具来解决:
| 工具 | 用途 |
|---|---|
extract_text(selector) | 读非交互区域的文字(如 quote 内容) |
goto(url) | 直接跳 URL(省点击成本) |
scroll(direction) | 翻屏(处理无限滚动列表) |
同时减少旧快照在历史中的占用,避免每一步都把完整页面反复带入后续请求。
<!-- bread-visual:start -->
<!-- bread-visual:end -->图解: 以 humor 标签引言采集为例。 截图只证明当前页面可见内容;是否抓全还要检查翻页与最终记录。
2. 跑起来
cd ch04_full_task
python main.py
预期输出
=== 任务 ===
Go to quotes.toscrape.com and find the tag 'humor'. ...
=== Agent 开始 ===
[step 0] click(index=46) ← 点 humor 标签
[step 1] extract_text(selector='.quote .text') ← 读所有引言文本
[step 1] extract_text(selector='.quote .author') ← 读所有作者
[step 2] click(index=39) ← 翻到另一个 humor 入口
[step 3] extract_text(selector='.quote .text')
[step 3] extract_text(selector='.quote .author')
[step 4] done(answer='[ ... 12 quotes ... ]')
=== Agent 最终回答 ===
[
{"text": "The person...", "author": "Jane Austen"},
{"text": "A day without sunshine...", "author": "Steve Martin"},
...
]
已存到 result.json (12 条记录)
打开 result.json,对照各页检查引言、作者和条数。文件生成只说明写出了结果,还需要确认有没有漏页、重复或字段配错。

<!-- bread-visual:end -->**网页实拍:**Viewing tag: humor 下方是一条条引言及作者;截图为当前视口,完整采集还需要处理翻页。 采集日期:2026-09-27。
<!-- bread-practice:start -->
实操画面对照

试读到这里 · 后续内容已封存
关注公众号,继续把这章学完
在「AI面包君」发送关键词「学习AI」拿到口令。验证一次,这个浏览器就能继续阅读全部课程。