Crawl4AI:把网页变成 AI 可读的 Markdown,RAG 知识库的抓取利器(75.7K Stars)

做知识库、RAG 或 AI Agent 时,最烦的一步是什么?不是模型,是把网页内容弄干净。打开网页 → 复制正文 → 手动删导航、删广告、删无关推荐——遇到 JavaScript 动态渲染、无限滚动、登录态页面,这套流程直接失控。

Crawl4AI 就是冲着这个问题来的:用真实浏览器加载网页,清洗噪声,直接输出干净、结构化、适合大模型消费的数据——Markdown、JSON、链接、媒体、截图、元数据,一条龙。GitHub 上已经 75.7K Stars,Apache-2.0 协议,Python 写的,活跃度拉满。

它和普通爬虫有什么不一样

传统爬虫(requests + BeautifulSoup)拿到的是原始 HTML,动态页面经常抓不到 JS 渲染后的内容。Crawl4AI 的流程是三层:

  1. 浏览器真实渲染——动态页面、异步请求、登录会话都在真实浏览器环境里跑,懒加载和无限滚动的内容也能拿到
  2. 内容清洗——按标签、选择器、相关性阈值过滤掉导航、广告、弹窗这些噪声
  3. 结构化输出——给你 Markdown、JSON、原始 HTML、截图、内链外链、页面元数据,直接能喂给下游

核心能力

Markdown 生成:输出原始 Markdown 和 Fit Markdown(过滤后的精炼版),支持正文过滤、BM25 相关性过滤和引用列表。

结构化提取:用 CSS、XPath 或 LLM 把重复结构的页面(商品列表、文档目录)直接提取成 JSON。

浏览器控制:支持 JavaScript 执行、Cookie、会话、持久化浏览器档案、代理、截图,还能驱动多种浏览器。

整站抓取:内置 BFS、DFS、Best-First 多种深度抓取策略,带恢复点、取消和预取模式,抓大型文档站不慌。

自适应研究:AdaptiveCrawler 会围绕你的问题评估信息覆盖度,信息够了自动停止——不会为了一个问题把整个网站盲目抓完。

上手有多简单

普通用户三条命令就能跑起来:

pip install -U crawl4ai
crawl4ai-setup    # 准备 Playwright 浏览器
crawl4ai-doctor   # 检查环境

把网页抓成本地 Markdown,几行代码:

import asyncio
from pathlib import Path
from crawl4ai import AsyncWebCrawler

async def main():
    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(url="https://docs.crawl4ai.com/")
        if not result.success:
            raise RuntimeError(result.error_message)
        Path("crawl4ai-docs.md").write_text(
            result.markdown.raw_markdown, encoding="utf-8")
        print("已生成 crawl4ai-docs.md")

asyncio.run(main())

不想写代码也行,CLI 直接来:crwl https://docs.crawl4ai.com -o markdown,加参数还能整站抓取、跑 LLM 提取。

Docker 自托管

要部署成服务,官方 Docker 镜像带浏览器池、监控面板、Playground、API 和 MCP 接入。注意 v0.9.0 之后安全默认值改了:API 默认开启认证,没设 Token 时只绑定本机地址,启动日志会打印一次性 Token。对外提供服务前先 export CRAWL4AI_API_TOKEN="$(openssl rand -hex 32)" 生成静态 Token 再启动。

使用边界

能抓到不等于可以随便抓。只抓公开可访问的内容、自己拥有的数据或已授权的页面,遵守网站服务条款和 robots 规则,别用浏览器控制、会话、代理去绕过登录、付费墙和访问限制。这是工具的基本伦理,也是它 README 里专门写的一节。

v0.9.2 是维护更新,主要修了流式任务资源泄漏、Docker Playground、WebSocket 和 GPU 构建问题,没有新功能也没有破坏性变更。一句话总结:先用 Crawl4AI 把网页变成干净可控的数据,再交给 RAG、Agent 和分析系统。

项目 信息
Stars 75.7K
语言 Python
平台 跨平台 (CLI / Docker)
协议 Apache-2.0

GitHub 源码

官网