AI Skill推荐推荐开源爬虫

Crawl4AI:专为 LLM 打造的网页爬虫

📅 2026-07-10

白物集每天从多个新闻源采集信息,生成知识卡片和深度文章。这套流程的核心一步是「把网页内容变成 LLM 能理解的结构化数据」。传统爬虫要么输出杂乱的 HTML,要么依赖 XPath 选择器逐个字段提取,既脆弱又费时。

Crawl4AI 就是为解决这个问题而生的开源工具。

项目速览

Crawl4AI 是一个开源、LLM 友好的网页爬虫和抓取工具,由 unclecode 开发,仓库位于 github.com/unclecode/crawl4ai。截至目前拥有 71,881 ⭐,Apache-2.0 开源协议,7380 次 Fork,社区活跃度高。

它的核心定位:让 AI Agent 和应用能轻松从网页中提取干净、结构化的数据。不需要写复杂的解析规则,不需要维护 XPath 选择器,不需要处理反爬策略——把这些脏活封装在底层。

核心能力

Crawl4AI 有几十项功能,但真正拉开差距的是这三条:

1. LLM 友好的结构化输出

传统爬虫返回 HTML 全文或纯文本,你需要自己写正则或 CSS 选择器从中提炼关键信息。Crawl4AI 的输出直接就是 LLM 友好的格式,支持 Markdown、结构化 JSON、语义分块。

调用 crawl(url) 返回的不是一堆 div 标签,而是包含标题、正文、元数据的干净字典。如果你需要特定类型的信息(比如产品价格、发布日期),还可以传入 extraction_strategy 让 LLM 直接帮你提取,无需写选择器。

2. 内置 JavaScript 渲染和反爬策略

现代网站严重依赖 JavaScript 动态加载内容。传统方案需要额外套一层 Puppeteer/Selenium。Crawl4AI 内置了 headless 浏览器支持,自动等待页面渲染完成再提取内容。

同时内置了防检测策略:User-Agent 轮换、请求头注入、延迟策略。在知识卡片采集场景中,这些策略直接决定了采集的覆盖率——被拦在 Cloudflare 外面就是零产出。

3. 大吞吐量并行爬取

爬虫领域的经典问题:要爬 100 个页面,串行太慢,并行会被封。Crawl4AI 内置了速率限制、并发控制、重试和降级策略。你只需要告诉它「最多 5 个并发,每秒最多 10 个请求」,剩下的它自己处理。

这个能力在批量采集场景中很关键——白物集的知识卡片采集需要每日从多个源获取最新内容,串行跑一遍要十几分钟,并行可以把时间压缩到一两分钟。

白物集的实际场景

白物集的内容管线每天采集科技新闻:Apple 新品发布、AI 行业动态、开源项目更新。采集源包括 RSS Feed 和新闻网站。

当前做法是用 Hermes Agent 的 terminal 工具执行 curl 请求,再手动解析 HTML。这个过程有几个痛点:

  • curl 拿到的 HTML 没有被 JavaScript 渲染——对于 SPA 网站(如某些技术博客),curl 返回的是空的骨架 HTML
  • 解析规则脆弱——网站改一次 CSS 类名,提取逻辑就得重写
  • 反爬门槛——Cloudflare 等 WAF 会拦截标准 HTTP 客户端

Crawl4AI 的引入可以解决这些问题:

from crawl4ai import WebCrawler

crawler = WebCrawler()
result = crawler.crawl(
    url="https://example.com/news",
    extraction_strategy="LLM",
    params={
        "provider": "openai/gpt-4o",
        "instruction": "提取所有新闻标题、发布日期和摘要",
        "chunk_token_threshold": 2000
    }
)
# result.markdown -> 干净的 Markdown 内容
# result.extracted_content -> LLM 提取的结构化 JSON

当然,当前白物集的知识卡片采集尚未完全接入 Crawl4AI——部署策略需要权衡:是在本地跑采集然后 POST 到 API,还是在远程服务器上部署一个常驻采集服务。但这正是 Crawl4AI 的优势:部署轻量,pip install crawl4ai 就完事了,不需要 Docker Compose 编排三个服务。

适合什么场景

Crawl4AI 最适合以下场景:

  • AI Agent 的数据采集——Agent 需要从网页获取信息喂给 LLM,Crawl4AI 输出格式天然适配
  • 知识库构建——从多个网站批量抓取内容构建 RAG 知识库
  • 竞品监控和价格追踪——定时采集结构化数据做分析
  • 新闻聚合——多源内容采集和清洗

不适合的场景:

  • 大规模搜索引擎索引——Crawl4AI 是轻量级工具,不是分布式爬虫框架
  • 需要登录态的高复杂度网站——虽然支持 session,但不是它的强项
  • 实时流式数据采集——它是请求-响应模式,不支持 WebSocket 长连

快速上手

第一步:安装

pip install crawl4ai

如果用到浏览器渲染,还需要安装 Playwright 的 Chromium:

playwright install chromium

第二步:基础用法

from crawl4ai import WebCrawler

crawler = WebCrawler()
crawler.warmup()  # 预热,加载浏览器实例

result = crawler.crawl(url="https://ai.golfr20.cn")
print(result.markdown[:500])  # 前 500 字符的 Markdown 内容

第三步:结构化提取

result = crawler.crawl(
    url="https://example.com/article",
    extraction_strategy="LLM",
    params={
        "provider": "openai/gpt-4o",
        "instruction": "提取文章标题、作者、发布时间、正文摘要",
    }
)
print(json.dumps(result.extracted_content, indent=2, ensure_ascii=False))

第四步:批量爬取

from crawl4ai import CrawlerPool

urls = [
    "https://news.ycombinator.com",
    "https://github.com/trending",
    "https://www.apple.com/newsroom",
]

pool = CrawlerPool(max_concurrent=5, rate_limit=10)
results = pool.crawl_many(urls)

for url, result in zip(urls, results):
    print(f"{url}: {len(result.markdown)} chars extracted")

第五步:处理动态页面

result = crawler.crawl(
    url="https://example.com/spa-page",
    js_code="window.scrollTo(0, document.body.scrollHeight);",  # 下拉加载更多
    wait_until="networkidle",  # 等待网络空闲
    screenshot=True            # 截图调试用
)

总结

Crawl4AI 把网页采集从「手写 XPath + 维护解析器 + 处理反爬」变成了「描述你要什么,它去拿」。在白物集的场景中,它有望把知识卡片的采集覆盖率从 70% 提升到 95% 以上,同时把单次的采集时间从十几分钟压缩到两三分钟。

如果你的项目也需要稳定的网页数据采集——不管是构建 RAG 知识库、监控竞品动态,还是做新闻聚合——Crawl4AI 是当前开源生态里最值得关注的选择。

← Anthropic 三线出击:Cowork、J-lens全 → AI 频道 GPT5.6 三档齐发:Sol 登顶编码基准,AI 格局改写 →