官方仓库:https://github.com/unclecode/crawl4ai

Crawl4AI 是目前 GitHub 上最受欢迎的开源网页爬虫之一,专为 LLM / RAG / AI Agent / 数据管道 设计。它能把网页快速转换成干净、结构清晰、适合大模型使用的 Markdown 或结构化数据,速度快、可控性强,支持深度爬取、反爬对抗、截图、PDF 生成等。

官方口号:“把网页变成 LLM 准备好的 Markdown”


核心特点

  • LLM 友好输出:默认生成干净 Markdown,去除广告、导航等噪音,适合直接喂给大模型或 RAG
  • 异步高性能:支持并发爬取多个 URL,速度快
  • 深度爬取(Deep Crawling):可递归爬取网站
  • 结构化提取:支持 CSS 选择器或 LLM 提取结构化数据(JSON)
  • 浏览器自动化:基于 Playwright,支持 JavaScript 渲染、截图、PDF 导出
  • 反爬能力:代理支持、反检测、Session 管理等
  • Docker 一键部署:支持自托管 API 服务
  • 本地优先:可完全本地运行,数据不离开你的环境

快速安装

1
2
3
4
5
6
7
8
# 安装最新版
pip install -U crawl4ai

# 运行安装后设置(安装浏览器等依赖)
crawl4ai-setup

# 检查安装是否正常
crawl4ai-doctor

如果浏览器相关出错,可手动安装:

1
python -m playwright install --with-deps chromium

最简单使用示例

1
2
3
4
5
6
7
8
9
import asyncio
from crawl4ai import AsyncWebCrawler

async def main():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun(url="https://www.example.com")
print(result.markdown) # 输出干净的 Markdown

asyncio.run(main())

同时爬取多个 URL

1
2
urls = ["https://example.com", "https://example.org"]
results = await crawler.arun_many(urls)

提取结构化数据(使用 LLM)

1
2
3
4
5
6
7
8
9
10
11
from crawl4ai import LLMExtractionStrategy

strategy = LLMExtractionStrategy(
provider="openai/gpt-4o-mini", # 或本地 Ollama 等
api_token="你的密钥",
schema={...}, # 定义想要的数据结构
instruction="提取文章标题、作者和摘要"
)

result = await crawler.arun(url="...", extraction_strategy=strategy)
print(result.extracted_content)

常用功能一览

功能 说明
Markdown 生成 干净、结构化的 Markdown,适合 RAG
结构化提取 CSS 或 LLM 提取 JSON
深度爬取 递归爬取整个网站
截图 / PDF 页面截图或生成 PDF
JavaScript 执行 点击按钮、滚动、填写表单等
Session 管理 保持登录状态
代理 / 反爬 支持代理轮换、反检测
Docker 部署 一键启动自托管 API 服务

Docker 快速部署(自托管服务)

仓库提供完整的 Docker 支持:

1
2
# 使用官方 docker-compose
docker compose up -d

启动后可通过 API 调用爬虫服务(v0.9.0 起默认开启认证,更安全)。


适用场景

  • 为 RAG 系统准备网页知识库
  • AI Agent 需要实时获取网页内容
  • 批量抓取新闻、论文、产品信息
  • 网站内容监控与结构化提取
  • 替代 Firecrawl 等商业方案(开源 + 本地可控)

总结:Crawl4AI 是目前开源界最强的 LLM 友好爬虫之一,文档完善、社区活跃、更新频繁。无论是简单抓取单个页面,还是构建复杂的深度爬取流水线,它都能很好地胜任。