Web ARChive (WARC) 格式是一种用于归档网络爬取数据的标准文件格式。它是由国际互联网保存联盟 (IIPC) 开发的,是对较旧的 Internet Archive ARC 格式的改进。WARC 文件包含一系列连接的内容块,每个内容块都由纯文本标题和二进制内容数据组成,使其更适合长期保存和访问基于网络的资源。
WARC 文件旨在存储主流互联网应用 层协议(如 HTTP、DNS 和 FTP)的有效载荷内容和控制信息。每个 WARC 文件都是一个自包含的归档文件,允许它在一个文件中存储多个离散资源。这使得它成为网络爬虫存储和处理大量网络数据的高效且便捷的格式。
WARC 格式规范定义了几种类型的记录,每种记录在归档过程中都有特定的用途: - `warcinfo`:包含 WARC 文件本身的元数据,例如用于创建它的软件、创建日期以及有关爬取的任何其他信息。 - `response`:存储由 Web 服务器返回的 HTTP 响应消息,包括标头和正文。 - `request`:存储由爬虫发送到 Web 服务器的 HTTP 请求消息。 - `metadata`:包含有关资源的其他信息,例如病毒扫描的结果或从 HTML 页面中提取的文本。 - `revisit`:表示自上次捕获以来资源的内容没有更改,从而可以更有效地存储和重放 Web 归档。 - `conversion`:存储将资源从一种格式转换为另一种格式的结果,例如将 HTML 页面转换为纯文本。
每个 WARC 记录都由纯文本标题和二进制内容块组成。标题包含提供有关记录的元数据的键值对,例如 WARC 记录类型、资源的 URI、捕获日期和时间以及内容长度。二进制内容块存储资源的实际数据,例如 HTTP 响应正文或 FTP 传输的有效载荷。
WARC 格式的一个主要优点是它能够在一个文件中存储多个资源,同时保持每个资源的完整性和上下文。这是通过在 WARC 文件中的记录中使用分层命名方案来实现的。每个记录都被分配一个唯一标识符,该标识符由一个强制性文件名和一个可选记录 ID 组成。这允许在 WARC 文件中轻松检索和管理各个资源。
WARC 文件还支持压缩,这有助于减少存储需求并提高传输速度。与 WARC 文件一起使用最常见的压缩算法是 gzip 和 bzip2。压缩的 WARC 文件通常分别具有扩展名 `.warc.gz` 或 `.warc.bz2`。