数据是现代研究和商业分析的命脉。无论是追踪竞争对手的价格、聚合新闻,还是为机器学习构建数据集,从网络中提取结构化数据的能力——即网络爬取 (Web Scraping) ——是一项关键技能。

然而,任何尝试过构建网络爬虫的人都知道其中的痛苦。网站结构会变,HTML 标签混乱不堪,而且维护针对数百个不同站点的爬虫简直是后勤噩梦。

通常我们面临两个选择: 花数小时手动为每个网站编写代码,或者斥巨资让大语言模型 (LLM) 单独解析每个页面。这两者都难以扩展。

本文将深入探讨 AUTOSCRAPER , 这是由复旦大学和阿里巴巴的研究人员提出的新框架。该论文介绍了一种“渐进式理解”智能体,旨在解决可扩展性问题。它不是自己直接进行爬取,而是利用 LLM 来编写执行爬取的代码,从而结合了 AI 的智能与传统代码的效率。

网络爬取的困境

要理解为什么需要 AUTOSCRAPER,我们首先需要看看当前方法的局限性。如下图所示,目前主要有两种提取数据的范式。

基于包装器的方法、基于语言智能体的方法与 AUTOSCRAPER 的对比。

1. 基于包装器的方法 (The Wrapper-Based Method)

这是传统方法。程序员 (或自动化脚本) 分析特定网页的 HTML,并编写一个“包装器”——一组规则 (通常是 XPath 或 CSS 选择器) ,指示“去这个 div,然后在那个 span 里抓取文本”。

  • 优点: 一旦写好,这些脚本运行速度极快且成本低廉。
  • 缺点: 它们很脆弱。如果网站布局改变,包装器就会失效。更重要的是,它们难以扩展 。 如果你需要爬取 1,000 个不同的电商网站,你就需要编写 1,000 个不同的包装器。

2. 基于语言智能体的方法 (The Language-Agent-Based Method)

随着 GPT-4 和其他 LLM 的兴起,一种新方法出现了。你只需将 HTML 喂给 LLM 并问: “这件商品的价格是多少?”

  • 优点: 适应性极强。你不需要写代码;AI 能“理解”页面。
  • 缺点: 极其昂贵且缓慢。将每个产品页面的完整 HTML 发送到像 GPT-4 这样的 API,对于大规模数据收集来说成本过高。

AUTOSCRAPER 解决方案

图 1 底部所示,AUTOSCRAPER 采取了一种混合方法。它扮演管理者的角色。它利用 LLM 分析少量页面并生成一个可重用的包装器 (一组提取规则) 。一旦包装器生成,你就可以在成千上万个页面上运行它,而不再需要 LLM。它结合了智能体的智能与包装器的效率

核心框架

AUTOSCRAPER 的目标是生成一个动作序列 (Action Sequence) 。 这不仅仅是一次点击;它是一系列 XPath (一种用于导航 XML 和 HTML 文档的语言) ,用于将网页剪枝到仅剩所需的数据点。

研究人员将动作序列 \(\mathcal{A}_{seq}\) 定义为 XPath 表达式的列表:

描述动作序列为 XPath 列表的公式。

该框架分两个阶段运行: 渐进式生成 (Progressive Generation)合成 (Synthesis)

展示渐进式生成和合成阶段的 AUTOSCRAPER 框架。

第一阶段: 渐进式生成

LLM 面临的最大挑战之一是 HTML 文档的巨大体积。现代网页可能有数千行代码,使得 LLM 很容易产生幻觉或迷失在嵌套的 div 标签中。

AUTOSCRAPER 通过渐进式理解解决了这个问题。它并不试图一次性猜出完美的 XPath。相反,它使用 DOM (文档对象模型) 树策略来导航 HTML 结构。

自顶向下遍历 (Top-Down Traversal)

智能体从 HTML 文档的根节点开始向下移动。它尝试生成一个 XPath 来定位目标信息。如果 LLM 生成的路径能成功提取数据,那就太好了。但通常情况下,LLM 可能范围太宽泛或不正确。

回退操作 (Step-Back Operation)

这是神奇之处。如果生成的 XPath 失败或指向了错误的节点,系统会执行“回退”。它会在 DOM 树上向上移动到一个更可靠的父节点,修剪掉 HTML 的无关部分。这实际上是在说: “让我们缩小视野,找一个更好的锚点。”

这种与 HTML 来回协商的具体逻辑在算法 1中有详细说明:

展示渐进式理解逻辑的算法 1。

通过迭代地细化范围 (修剪树) ,LLM 会被喂入更小、更相关的 HTML 块,从而显著提高最终 XPath 生成的准确性。

第二阶段: 合成

一个包装器可能在网站的 页面 A 上完美运行,但在 页面 B 上却失败,原因可能是细微的布局变化 (例如,页面 B 有一个折扣横幅,改变了价格的位置) 。

为了确保鲁棒性,AUTOSCRAPER 不会只信任单个页面。它使用一个合成模块 (Synthesis Module)

  1. 它选择一小组“种子”网页 (例如,3 个不同的产品页面) 。
  2. 它为所有这些页面生成候选动作序列。
  3. 它在所有种子页面上执行这些序列。
  4. 它选择在所有种子页面上成功率最高的序列。

这确保了最终的爬虫对整个网站具有“泛化能力”,而不仅仅是过拟合单个示例。

为什么传统指标会失效

在标准信息抽取 (IE) 任务中,我们根据提取的文本使用精确率 (Precision) 、召回率 (Recall) 和 F1 分数来衡量成功。然而,对于爬虫生成任务,这些指标可能会产生误导。

如果生成的爬虫在 90% 的数据上有效,但在另外 10% 上崩溃或什么都没返回,那么作为一个软件工具,它本质上是损坏的。研究人员提出了一个名为可执行性 (Executability) 的新指标。

可执行性指标公式。

他们将生成的爬虫分为几类:

  • 正确 (Correct) : 完美的精确率、召回率和 F1。
  • 不可执行 (Un-executable) : 未能识别相关实例 (Recall = 0) 。
  • 过度估计 (Over-estimate) : 在本应为空的地方提取了垃圾内容。

这种测量方式的转变至关重要,因为它优先考虑生成功能性代码,而不仅仅是获得一次正确的文本。

实验结果

研究人员将 AUTOSCRAPER 与标准基线进行了测试,如 思维链 (COT)反思 (Reflexion) (一种 LLM 对其错误进行反思的方法) 。他们使用了多种 LLM 后端,包括 GPT-3.5、GPT-4 以及 Llama 和 Mixtral 等开源模型。

1. 优于基线

结果是决定性的。AUTOSCRAPER 始终比基线生成更多可用的爬虫。

看看 图 4 中的对比。这里的任务是找到詹姆斯·哈登 (James Harden) 的平均得分。

  • COT 失败了,因为它抓取了“助攻”列或原始的“总得分”,而不是平均值。
  • Reflexion 试图自我纠正,但在复杂的表格中仍然难以区分不同的统计类别。
  • AUTOSCRAPER (绿色勾选) 成功导航结构并找到了“PPG” (场均得分) 列。

展示 AutoScraper 成功而 COT 和 Reflexion 失败的对比。

2. 合成的影响

第二阶段——根据多个种子页面检查爬虫——有多重要?下面的消融实验 (表 3) 说明了一切。

展示包含与不包含合成模块时性能指标的消融实验。

当移除合成模块 (标记为“- synthesis”的行) 时,“正确”率显著下降,“不可执行”率上升。例如,使用 GPT-4-Turbo 时,使用合成模块将“正确”率从 65.31% 提升到了 71.56%

3. 效率与成本

这对开发者来说是最实际的发现。虽然生成爬虫需要前期时间,但当你必须爬取大量页面时,回报是巨大的。

研究人员对时间成本进行了建模。直接抽取 (要求 LLM 爬取每一页) 是线性的——每页花费的时间永远相同。AUTOSCRAPER 有一个设置成本 (生成) ,但执行几乎是瞬间的 (毫秒级) 。

时间效率分析表。

表 6 所示,“盈亏平衡点”惊人的低。对于“汽车 (Auto) ”领域,直接抽取 (\(T_d\)) 每页耗时 8.27 秒。生成的爬虫仅需 0.30 秒。

利用他们推导的公式计算阈值:

计算效率阈值页数的公式。

实验表明,如果你需要从一个网站爬取超过 约 20 个页面 , AUTOSCRAPER 就比直接使用 LLM 更快 (也更便宜) 。考虑到大多数爬取任务涉及数千个页面,效率提升是巨大的。

种子网站的作用

研究中探索的一个有趣参数是训练爬虫所需的种子网站数量。给 LLM 展示更多示例有帮助吗?

展示随着种子网站数量增加性能提升的图表。

图 3 显示,随着种子网站数量的增加 (从 1 到 5) ,“正确”百分比 (灰线) 呈上升趋势,而“不可执行”率下降。这证实了给模型提供稍广阔的网站多样性视图有助于它编写更健壮的代码。

结论

AUTOSCRAPER 代表了自主数据收集向前迈出的重要一步。它让我们摆脱了“脆弱的手动脚本”与“昂贵的 AI 抽取”之间的二元选择。

通过将 LLM 视为工具的生成者而不是工具本身,我们可以实现:

  1. 可扩展性 (Scalability) : 无需手动编码即可处理新网站。
  2. 鲁棒性 (Robustness) : 使用合成确保规则在不同页面上有效。
  3. 效率 (Efficiency) : 以标准代码的速度运行提取,而不是 LLM 的速度。

对于对网络智能体感兴趣的学生和开发者来说,这篇论文强调了结构性理解的重要性。仅仅让 AI 阅读文本是不够的;对于像爬取这样的任务,AI 必须理解将网络维系在一起的底层骨架 (HTML DOM) 。随着 LLM 在编码和推理方面的不断进步,像 AUTOSCRAPER 这样的框架很可能会成为自动化信息收集的标准。