unclecode/crawl4ai

Open-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.

Crawl4AI – 专为 LLM 和 AI 代理打造的开源网页爬虫与抓取工具

它是什么 – 一个 Python 库(也提供 Docker 服务器和托管云服务),可以抓取任何网页,在需要时运行真实浏览器,并返回干净、适合 LLM 使用的 Markdown 文档。它还可以使用 CSS/XPath 规则或您指定的任何 LLM 提取结构化数据 (JSON),并支持深度爬取、自适应爬取和批处理。

为什么重要 – 大型语言模型最适合处理简洁、结构良好的文本。Crawl4AI 会移除菜单、页脚和其他样板内容,添加引用链接,并能生成符合您定义架构的 JSON。这使其成为检索增强生成 (RAG) 流水线、自主代理或任何数据摄取工作流的实用前端。

如何使用

  • 库 – pip install -U crawl4ai;执行 crawl4ai-setup 以安装 Playwright 浏览器。然后使用 AsyncWebCrawler(或同步版本)来获取 result.markdown 或 result.extracted_content。
  • CLI – crwl <url> -o markdown 或 crwl … --deep‑crawl bfs --max-pages 10。
  • Docker 服务器 – 启动 unclecode/crawl4ai 并设置 Token,即可从任何语言调用其 REST 端点(/md、/html、/crawl、/screenshot 等)。
  • Crawl4AI Cloud – 几秒钟内获取免费 API 密钥,即可调用 https://api.crawl4ai.com/scrape(或 /search、/answer、/extract),无需自行管理浏览器。

主要功能(如 README 所列)

  • Markdown 生成 – 干净的标题、表格、代码块、引用列表;可配置过滤器(PruningContentFilterLXML、BM25ContentFilter、LLMContentFilter)。
  • 结构化提取 – 用于快速、无需 LLM 提取的 CSS/XPath/Regex 架构;适用于任何 LLM 提供者的 LLMExtractionStrategy;自动架构生成;分块与余弦相似度搜索。
  • 浏览器控制 – 持久化配置文件、CDP 远程浏览器、会话处理、代理支持、隐身/未检测模式、Chromium/Firefox/WebKit。
  • 爬取 – BFS/DFS/最佳优先策略、恢复状态、在收集足够信息后停止的自适应爬取、通过网站地图或 Common Crawl 进行 URL 发现、针对无限滚动网站的全页滚动、截图/PDF、媒体提取、缓存、批处理 (arun_many)。
  • 自托管 – 安全的 Token 保护 REST API、用于 Claude Code/其他代理的 MCP 集成、监控仪表板/游乐场、AMD64 与 ARM64 Docker 镜像。
  • 云端专属附加功能 – 无浏览器网页搜索 (/search)、直接回答 (/answer)、无需您自备 LLM 密钥的提取、自动处理 JS 密集型网站与机器人防御墙、一行指令 MCP 注册。

安装快速入门

pip install -U crawl4ai
crawl4ai-setup          # 安装 Playwright 浏览器
# 可选健康检查
crawl4ai-doctor

或使用 Docker:

export CRAWL4AI_API_TOKEN=$(openssl rand -hex 32)
docker run -d -p 11235:11235 \
  -e CRAWL4AI_API_TOKEN=$CRAWL4AI_API_TOKEN \
  unclecode/crawl4ai:latest

典型代码片段

import asyncio
from crawl4ai import AsyncWebCrawler

async def main():
    async with AsyncWebCrawler() as crawler:
        res = await crawler.arun(url="https://news.ycombinator.com")
        print(res.markdown)   # 干净且适合 LLM 的 markdown

asyncio.run(main())

授权 – Apache 2.0(可选择是否加上徽章或文字署名)。

社区 – Discord、GitHub issues、贡献指南,以及协助资助持续开发的免费额度云端方案。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目