摘要
Web 自动化是一种重要技术,通过自动化常见的 Web 操作来完成复杂的 Web 任务,可以提高运营效率并减少手动操作的需要。
传统的实现方式,比如包装器(Wrapper),当面对新的网站时,面临着适应性和可扩展性的限制。
另一方面,由大型语言模型(LLM)赋能的生成型代理在开放世界场景中表现出较差的表现和可重用性。
在这项工作中,我们提出了一个面向垂直信息网页的爬虫生成任务,以及将自然语言模型(LLMs)与爬虫结合的范式,这有助于爬虫更高效地应对多变的网络环境。
我们提出了一种名为 AUTOCRAWLER 的两阶段框架,利用 HTML 的层次结构进行逐步理解。通过自上而下和回溯操作,AUTOCRAWLER 可以从错误的行为中学习,并持续精简 HTML,以生成更好的动作。我们使用多个 LLM 进行了全面的实验,并展示了我们框架的有效性。
介绍
Web 自动化是指通过程序化方式与基于网络的应用程序或网站交互的过程,以执行通常需要人工操作的任务。
Web 自动化通过简化重复且耗时的任务,显著提高了各种在线流程的效率、准确性和可扩展性。
在传统网络自动化中,方法主要依赖于包装器,这是一些专门设计用于从特定网站或页面中提取数据的脚本或软件。这种方法是封闭世界场景的特征,自动化系统仅与预定义的、有限的网站或页面集合交互,并且不扩展到该指定域之外。因此,这些传统方法在适应性和可扩展性方面存在局限性,当遇到新的或改变的网站结构时,难以有效地运行。
在这些限制下,基于规则的封装器和自动生成的封装器(Bronzi 等,2013 年),尽管它们之间有所不同,但都共同依赖于为每个网站手动标注的示例。例如,已经使用了超过 1,400 个网页标注来进行信息抽取(Lockard 等,2019 年)。
LLMs 的出现彻底改变了 Web 自动化,通过引入诸如规划、推理、反思和工具使用等高级能力。利用这些能力,Web 自动化通过 LLM 构建生成型代理,这些代理可以自主浏览、解释并与 Web 内容交互。
这通过复杂的语言理解和决策过程有效地解决了开放世界的基于 Web 的任务。然而,尽管取得了这些进展,这一模式仍面临两个主要问题。
一方面,现有的 web 代理框架通常表现出较差的性能,成功率较低(Deng 等人,2023 年,在开放世界的任务)。
另一方面,这种方法遇到的一个重大弱点是它的可重用性不足。
这意味着这些代理即使在处理类似的任务时也过度依赖 LLM,从而导致在管理大量重复和类似的网页时效率低下。
在这项工作中,我们提出了一个爬虫生成任务的垂直信息网页。该任务的目标是自动生成一系列预定义的规则或动作序列,以自动提取目标信息。
这个任务需要一个 LLM 生成爬虫的范例。与传统的包装器相比,这种范式可以根据不同的网站和任务需求快速调整。
这种灵活性使抓取器能够更有效地处理多样化和不断变化的网络环境。与生成式代理范式相比,它引入了中间规则来增强可重用性,并在处理类似任务时减少对 LLM 的依赖,从而在处理大量 Web 任务时提高效率。
尽管 LLM 具有强大的网页信息提取能力,但 LLM 的爬虫生成仍然存在以下挑战:
首先,LLM 主要是在大量干净的高质量纯文本语料库上进行预训练,缺乏对 HTML 等标记语言的接触。因此,LLM 对 HTML 中固有的复杂结构和语义的理解有限。
其次,HTML 作为一种半结构化数据,包含结构化(标签和属性)和非结构化(文本内容)的元素,同时包含嵌套的多层信息。它增加了爬虫生成的复杂性。
第三,尽管 LLM 在理解文本内容方面表现出色,但他们在理解冗长的结构信息文档方面仍然存在不足。这表明在准确捕获和利用长 HTML 文档中固有的层次结构方面存在潜在的挑战。
因此,我们引入 AUTOCRAWLER,一个两阶段的框架,旨在解决这些爬虫生成任务中的困难。我们的框架利用 HTML 的层次结构进行渐进式理解。
我们提出了一种基于 LLMs 的启发式算法,该算法包含上下分治和回溯操作。首先,尝试逐步细化到 DOM 树中包含目标信息的特定节点,当执行失败时,则向上回溯 DOM 树。这个过程能够修正错误的执行,并逐步剔除 HTML 内容中与目标无关的部分,直到成功执行。
我们的贡献可概括如下:
- 我们提出了网络爬虫生成任务和利用大型语言模型(LLMs)生成爬虫的范式,并对抽取效率进行了分析。
- 我们引入了 AUTOCRAWLER,这是一个两阶段框架,具有逐步理解能力,用于生成可执行的操作序列。
- 全面的实验结果证明了我们框架在网页爬虫生成任务中的有效性。
AUTOCRAWLER 框架详解
在本节中,我们解释了 AUTOCRAWLER 框架的开发,用于根据从半结构化的 HTML 中提取特定信息生成网络爬虫。我们的方法分为两个阶段:首先,我们采用了一种基于网页层级结构的渐进式生成框架;其次,我们基于从多个网页获取的结果建立了合成框架。
与生成 XPath 的包装器方法不同,我们将爬虫生成任务建模为行动序列生成任务。具体来说,我们生成一个行动序列 A_seq,它由一组种子网页(即测试案例中生成序列的小部分网页)中的一系列 XPath 表达式组成。
n 代表动作序列的长度。我们在顺序使用解析器的方式执行 XPath。在序列中,除了最后一个 XPath 表达式之外的所有 XPath 表达式都用于筛选网页,最后的表达式用于从筛选后的网页中提取相应的元素值。


