截至2026年10月7日,Shifter拥有规模最大的美国实时IP池,超过Oxylabs和Bright Data,而成本只是其一小部分。Shifter 现在拥有数量最多的美国活跃 IP 资源池

查看基准测试

Common Crawl:何时免费爬取数据足够,何时需要自建爬虫

Common Crawl 每月免费发布数十亿个网页。它包含哪些内容,遗漏哪些内容,如何检查你的数据源是否在其中,以及何时需要自行爬取。

数据科学 · 更新于2026年11月6日 · 3分钟阅读
网站上的页面200404 · 429不在此次抓取中
一次抓取中的一个网站。蓝色页面已被捕获,琥珀色页面则返回为错误。
知识
本页内容
  1. 你能得到什么
  2. 它遗漏了什么
  3. 决定前先检查覆盖范围
  4. 什么时候免费爬取数据就够用
  5. 什么时候需要自己的爬取
  6. 值得一读的条款
  7. 结论
  8. 来源与参考资料

对于很多网络数据工作来说,最便宜的爬取就是别人已经做过的那次。Common Crawl 每月免费发布一大批公开网络数据,它支撑着许多用于训练 AI 模型的文本数据集。但它是为广度而建,不是为你特定的来源列表而建,知道它的局限在哪里能为团队节省数周时间。

本指南介绍 Common Crawl 包含什么、不包含什么、如何检查它是否覆盖你需要的页面,以及什么时候值得自己运行爬取。

你能得到什么

Common Crawl 是一家美国非营利组织,其宗旨是向研究人员、公司和个人免费提供互联网的副本。其最新一次爬取 CC-MAIN-2026-43 的数据,采集于 2026 年 10 月 5 日至 18 日之间:

页面数21.6 亿
注册域名3430 万
主机数4140 万
之前爬取中未出现过的 URL8.301 亿
未压缩内容371.19 TiB
频率约每月一次爬取
格式WARC(原始响应)、WAT(元数据)、WET(纯文本)
访问方式us-east-1 的公开 AWS 存储桶、HTTPS 下载、URL 索引

语言分布广泛但不均衡:在该次爬取中,英语占检测到的 HTML 页面的 42.6%,其次是俄语 6.3%,德语 5.8%。

它遗漏了什么

这些限制来自 Common Crawl 自己的文档,它们决定了大多数”自建还是复用”的选择。

  • 它是一个样本。 Common Crawl 表示,它通常不会归档整个网站,而是”随机选取其中的一个子集”。不要指望每个产品页面或每篇文章都在其中。
  • 没有 JavaScript。 其 FAQ 说明不执行 JavaScript,也不使用 cookie,因此只有在脚本运行后才出现的内容会缺失。
  • 没有登录或付费墙内容。 其声明表示不会进入付费墙后面,也不会登录任何网站。
  • 它尊重拒绝请求。 CCBot 首先检查 robots.txt 并遵守 crawl-delay。在 10 月的爬取中,4.85% 的抓取请求被 robots.txt 或 403 拒绝,18.47% 被跳过。我们关于网络中有多少部分处于机器人屏蔽之后的分析将这一数字放在了背景中。
  • 单一视角。 它从一小组公开地址进行爬取,因此你得到的是每个页面的一种视角。因国家、语言或设备而异的页面只会出现一个版本。
  • 它是一个快照。 页面呈现的是采集日期当天的状态,可能已经是数周前的了。

决定前先检查覆盖范围

最快的测试方法是向索引询问你的来源是否在其中。下面的脚本会找到最新的爬取,并查询某个 URL 模式的采集记录。它按照 Common Crawl 的要求,从你自己的连接每次发送一个请求;如需批量查询,请改用 AWS 上的 Parquet URL 索引。该脚本可在 Python 3.9 及更高版本上运行,需要 requests。

from __future__ import annotations

import json

import requests

INDEX = "https://index.commoncrawl.org"
HEADERS = {"User-Agent": "coverage-check/1.0 (contact: data-team@example.com)"}


def latest_crawl():
    """The newest crawl ID, from Common Crawl's own list."""
    return requests.get(f"{INDEX}/collinfo.json", headers=HEADERS, timeout=60).json()[0]["id"]


def captures(crawl, url_pattern, limit=1000):
    """Captures of matching URLs in one crawl. One request, no proxies: the index asks for that."""
    r = requests.get(f"{INDEX}/{crawl}-index", headers=HEADERS, timeout=120,
                     params={"url": url_pattern, "output": "json", "limit": limit})
    if r.status_code == 404:  # no captures at all
        return []
    r.raise_for_status()
    return [json.loads(line) for line in r.text.splitlines()]


if __name__ == "__main__":
    crawl = latest_crawl()
    rows = captures(crawl, "en.wikipedia.org/wiki/*")
    statuses = {}
    for row in rows:
        statuses[row["status"]] = statuses.get(row["status"], 0) + 1
    print(crawl, "captures returned:", len(rows), "by status:", dict(sorted(statuses.items())))
    print("first:", rows[0]["url"], rows[0]["timestamp"]) if rows else print("none")

2026 年 11 月 6 日针对英文维基百科上一个模式的输出,结果上限为 1,000 条:

CC-MAIN-2026-43 captures returned: 1000 by status: {'200': 949, '301': 15, '404': 30, '429': 6}
first: https://en.wikipedia.org/wiki/!!! 20261017084408

两件事立刻显现出来。对大型网站的覆盖是真实存在的,但并不完整,所以要针对你自己的模式统计实际结果。而且采集记录带有 Common Crawl 收到的状态码:此处有 30 个是 404,6 个是 429,所以一条采集记录并不总是意味着有内容。使用之前先按状态码过滤。

什么时候免费爬取数据就够用

  • 对大范围文本进行训练和研究。 语言建模、分类器和网络规模统计需要的是广度,而非某个特定页面。这正是 Common Crawl 最擅长的领域,我们关于从开放网络构建训练数据集的指南介绍了它仍然需要的过滤和去重工作。
  • 发现式工作。 查找哪些域名提到了某个话题、绘制链接图谱或估算网站规模,使用 URL 索引成本很低。
  • 历史对比。 追溯多年的月度快照,自己重新创建会很困难。

什么时候需要自己的爬取

  • 你需要特定的页面,而且要完整。 样本会漏掉其中一些,而你不会知道漏掉了哪些。
  • 你需要新鲜数据。 价格、库存和排名每天都在变化。月度快照只是历史记录。
  • 内容需要 JavaScript。 许多现代页面只在浏览器中渲染其数据。
  • 你需要本地视角。 价格、搜索结果和广告因国家而异。来自单一视角的爬取只能给出一个答案。按每个市场的访客所见的方式采集数据,正是住宅代理的用途所在。
  • 你需要证明数据来源。 自己运行的爬取能让你准确记录每个页面是如何、何时、从何处被抓取的。

许多团队会将两者结合:用 Common Crawl 获取广度和发现能力,用自己的爬虫获取最重要的那些来源。

值得一读的条款

Common Crawl 自己的条款比较简洁,但仍然值得关注。其使用条款说明,被爬取的内容可能受其来源网站条款的约束,用户同意尊重版权和其他权利,并建议在商业用途前寻求法律咨询。使用该内容来开发、训练或部署 AI 系统所产生的索赔责任,也由用户自行承担。自 2025 年起,Common Crawl 还发布了一份法律退出请求登记册,并将受影响的 URL 从后续爬取及其工具中移除。重复使用这些数据并不能让你摆脱这些问题,因此要记录好你使用了哪些数据。

结论

当你需要广度、历史记录或便宜的初步浏览时,Common Crawl 是正确的起点。但当你需要特定页面、新鲜数据、JavaScript 内容或本地视角时,它就不够用了。先用索引检查你的覆盖范围,按状态码过滤采集记录,阅读条款,只在免费样本不够用的地方自己进行爬取。

来源与参考资料

常见问题

什么是Common Crawl?

这是一家非营利组织,大约每月抓取一次网络并将结果免费发布在AWS上。其2026年10月的抓取包含来自3430万个注册域名的21.6亿个页面,格式为WARC、WAT和WET文件,并附有URL索引。

Common Crawl是网络的完整副本吗?

不是。Common Crawl将每次抓取描述为一个样本:它通常不会归档整个网站,而是随机选取的一个子集。它也不运行JavaScript、不登录,也不会绕过付费墙,并且会跳过robots.txt禁止访问的页面。

我可以将Common Crawl的数据用于商业用途或AI训练吗?

Common Crawl自身的条款限制很少,但被抓取的页面可能受其所有者条款和版权的约束,其条款规定用户需对AI使用引发的索赔负责。对于商业或训练用途,请咨询法律意见。

我应该使用代理来查询Common Crawl吗?

不应该。Common Crawl的常见问题解答要求用户不要从单个IP运行大量线程,也不要针对其索引服务器使用代理网络。对于批量工作,请改为从其公共AWS存储桶或Parquet URL索引中读取数据。

准备好开始了吗?

试用 Shifter 住宅代理,205M+ 个 IP,195+ 个国家,低至 $0.10/GB。

立即开始