💡阅读指南

从这一节开始,Hermes 要走出去,走进一个全新的领地:网页

网页上有信息。而把网页上的信息变成自己能用的数据,是大多数人与浏览器打交道的第一需求。

这条路怎么走?先看两条完全不同的路线图——传统爬虫和 AI Agent,然后理解 Hermes 为什么选了后者的方式。

4.1 拿网页数据的两条路

把网页上的信息变成本地数据,这件事已经做了二十几年。过去只有一条路,现在有了第二条。

第一条路:爬虫

code
+------------------------------------------------------------
|  传统爬虫的数据流
|
|  请求 HTML → 解析 DOM → 写选择器 → 抽字段 → 导出
|
|  示例:
|    resp = requests.get(url)
|    soup = BeautifulSoup(resp.text, 'html.parser')
|    title = soup.select('.book-title')[0].text
|    score = soup.select('.rating')[0].text
+------------------------------------------------------------

这条路程序员最熟悉。流程线性、速度快、成本低。但有两个问题让它现在不再是第一选择:

  1. 页面不再是一张静态 HTML。现在大多数网站是 SPA(单页应用程序),即真正的数据由 JavaScript 在浏览器里异步拉回来再渲染。所以,requests.get() 拿到的是个空壳,里面没有数据。要解决这个问题,必须上 Puppeteer / Playwright 这种 headless browser,让 JavaScript 跑完再抓 DOM。
📌什么是 headless browser(无头浏览器)

指没有图形界面的浏览器。它能像正常浏览器一样加载网页、执行 JavaScript、渲染 DOM,但没有窗口、看不到页面——全程在后台命令行里跑。Puppeteer 和 Playwright 都是这类浏览器。

  1. 选择器天然脆弱。写脚本时 div.book-title 能取到标题,三个月后页面改版,class 换成 BookInfo_title__3a7f,脚本就无效了。

偶尔改动一次还能接受,但面对每周都在变的现代前端,人工维护成本会吃掉自动化的全部收益。

这两个限制叠加在一起,让传统爬虫的适用范围越来越窄——高频、稳定的页面(内部系统、固定格式报表)用它划算;动态、频繁改版、一次性的页面,写脚本的性价比就差了很多。

第二条路:AI Agent

Hermes 默认不用第一种方案。它不是靠「请求 HTML → 写死选择器」这条流水线,而是换了一种方式抓取内容:

code
+------------------------------------------------------------
|  Hermes 的数据流
|
|  人用自然语言说「我要抓取 XX 页面的作者和评分」
|         → Hermes 打开页面 → 获取无障碍树快照
|         → 无障碍树把页面结构翻译成文本:
|            每个元素有角色(heading / link / button)、
|            名称和引用标记(@e1, @e2)
|         → LLM 读文本就能理解页面、定位字段
|         → 清洗 → 导出
+------------------------------------------------------------

核心差别在中间两步。传统爬虫靠的是选择器——人提前扒 HTML 源码、把 class 写死在代码里。但 Hermes 默认的方式不是这样。

那么 Hermes 或者现在绝大多数的 AI Agent 是怎么处理这个问题的?

它们靠的是无障碍树(accessibility tree),即浏览器把页面结构翻译成一份带角色标注的文本描述。LLM 读文本就能认出「这个 heading 是书名、那个 text 是评分」,不需要写任何选择器,也不需要视觉模型(所以即使是 DeepSeek 也能识别出元素)。

📌无障碍树是什么

无障碍树(accessibility tree)最早是给屏幕阅读器用的,主要服务于视障用户。屏幕阅读器「读」网页,需要知道页面上每个元素是什么(按钮?标题?链接?),于是浏览器在渲染页面时,会额外生成一份带角色标注的结构化描述,通过操作系统无障碍 API 提供给屏幕阅读器。

所有主流浏览器(Chrome、Firefox、Safari、Edge)都支持这一机制。W3C 还专门为它定了一套标准叫 ARIA(Accessible Rich Internet Applications),全球浏览器支持率超过 88%。

发展到今天,无障碍树已经不只为视障人士服务了。因为它能给出页面最干净的「骨架」——角色(heading / link / button / text)、可见文本、引用标记(@e1、@e2)——Hermes 这类 AI Agent 也用它来「读」网页。LLM 拿到这份文本后,不需要看图就能理解页面结构。

这个做法有两个好处:

  • 不用预先了解页面结构、也不用写死选择器。传统做法是人提前打开页面、扒一遍 HTML、把规则写成脚本;但 Hermes 的原理和这个不同。
  • 不受页面改版影响。class 换了一套新的没关系——Hermes 下一轮打开页面,重新看一眼、重新借助大模型去寻找需要的信息,不需要人改任何代码。

这种方式的代价当然有:比直接爬 HTML 慢、更耗 token、稳定性不够好。

所以需要具体的问题具体分析: - 高频稳定的页面传统爬虫更快更省; - 临时、模糊、经常变动的页面交给 Hermes 更划算。

4.2 ■ 学点英语

中文 English 音标 说明
网页抓取 Web Scraping /web ˈskreɪpɪŋ/ 从网页中自动提取信息的技术
结构化数据 Structured Data /ˈstrʌktʃərd ˈdeɪtə/ 按字段、表格或对象组织起来的数据
字段映射 Field Mapping /fiːld ˈmæpɪŋ/ 把页面信息对应到结构化字段的关系
解析规则 Parsing Rule /ˈpɑːrsɪŋ ruːl/ 从原始文本或 HTML 中抽取数据的规则