🚀 Crawl4AI 是 GitHub 上排名第一的趋势项目,由活跃的社区持续维护。它为 LLM、AI Agent 和数据管道提供极速、AI 就绪的网页爬取能力。Crawl4AI 开源、灵活且专为实时性能构建,能够以无与伦比的速度、精准度和易用性赋能开发者。

🎉 版本 0.5.0 发布! 这次重要更新引入了深度爬取(支持 BFS/DFS/BestFirst 策略)、内存自适应调度器、多种爬取策略(Playwright 和 HTTP)、基于 FastAPI 的 Docker 部署、命令行工具(CLI)等!阅读发布说明 →

🤓 我的故事 我对计算机的热爱始于童年,那时我的父亲(计算机科学家)向我介绍了 Amstrad 计算机。这段经历点燃了我对技术的热情,促使我在研究生阶段攻读计算机科学并专攻 NLP。也是在那段时间,我首次接触了网页爬取,构建工具帮助研究人员整理论文并提取出版物中的信息。这段经历虽然充满挑战,但让我在数据提取方面积累了丰富经验。 时间来到 2023 年,我在做项目时需要将网页转换为 Markdown 格式。在寻找爬虫工具时,我发现了一款号称开源的解决方案,但实际上却需要注册账号并生成 API Token。而更糟糕的是,这竟然是一个收费的 SaaS 模型,每月收费 16 美元,且质量并不理想。这让我感到非常失望,甚至愤怒,于是决定自己开发一款爬取工具。仅用了几天时间,我便创建了 Crawl4AI。让我惊讶的是,它迅速在 GitHub 上走红,收获了数千颗星标,并吸引了全球开发者的关注。 我将 Crawl4AI 开源有两个原因: 1. 回馈开源社区——在我的职业生涯中,开源社区一直给我很多帮助。 2. 我坚信数据应对所有人开放,而不是被少数几家机构垄断或隐藏在付费墙后。开放数据有助于 AI 民主化,赋予个人训练自己模型的能力。这款库只是迈向更大目标的第一步:打造全球最强大的开源数据提取和生成工具,与热情的社区成员共同构建。 感谢所有支持这个项目的人!你的反馈和鼓励让我充满动力,继续追逐更大的梦想。欢迎加入我们,提交 Issue、贡献 PR,或帮助传播这个项目!让我们一起打造真正赋能每个人的数据访问工具,重塑 AI 的未来!

🧐 为什么选择 Crawl4AI?

  1. 专为 LLM 构建:生成适合 RAG 和微调应用的简洁 Markdown。
  2. 极速性能:爬取速度提升 6 倍,实时高效且成本低。
  3. 灵活的浏览器控制:支持会话管理、代理和自定义 Hook,无缝访问数据。
  4. 启发式智能:采用高级算法高效提取数据,减少对昂贵模型的依赖。
  5. 开源且易部署:无需 API Key,支持 Docker 和云端集成。
  6. 活跃社区:由全球开发者社区维护,成为 GitHub 上排名第一的热门项目。

🚀 快速开始

  1. 安装 Crawl4AI: ```bash

    安装包

    pip install -U crawl4ai

安装预发布版本

pip install crawl4ai —pre

运行安装后的配置

crawl4ai-setup

验证安装情况

crawl4ai-doctor

  1. 如果遇到浏览器相关问题,可以手动安装:
  2. ```bash
  3. python -m playwright install --with-deps chromium
  1. 使用 Python 运行简单的爬取任务: ```python import asyncio from crawl4ai import *

async def main(): async with AsyncWebCrawler() as crawler: result = await crawler.arun( url=”https://www.nbcnews.com/business“, ) print(result.markdown)

if name == “main“: asyncio.run(main())

  1. 3. 或使用命令行:
  2. ```bash
  3. # 基本爬取,输出 Markdown
  4. crwl https://www.nbcnews.com/business -o markdown
  5. # 深度爬取,使用 BFS 策略,最多爬取 10 页
  6. crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10
  7. # 使用 LLM 提取指定问题的数据
  8. crwl https://www.example.com/products -q "提取所有产品价格"

✨ 功能亮点

📝 Markdown 生成 - 🧹 纯净 Markdown:生成结构清晰、格式精准的 Markdown。
- 🎯 精简 Markdown:基于启发式过滤噪音,生成适合 AI 处理的数据。
- 🔗 引用与参考:将页面链接转换为编号引用列表。
- 🛠️ 自定义策略:支持自定义 Markdown 生成策略。
- 📚 BM25 算法:采用 BM25 筛选核心信息,去除无关内容。
📊 结构化数据提取 - 🤖 LLM 驱动提取:支持所有 LLM(开源和商用)进行结构化数据提取。
- 🧱 分块策略:支持按主题、正则或句子级别分块,精确处理内容。
- 🌌 余弦相似度:基于查询提取语义相关内容。
- 🔎 基于 CSS 的提取:通过 XPath 和 CSS 选择器提取结构化数据。
- 🔧 自定义 Schema:可自定义数据提取 Schema,将网页数据转换为 JSON。
🌐 浏览器集成 - 🖥️ 自有浏览器管理:使用本地浏览器,避免被检测为爬虫。
- 🔄 远程浏览器控制:连接 Chrome DevTools Protocol,远程大规模爬取数据。
- 👤 浏览器配置文件:管理持久化配置,包括身份验证状态和 Cookies。
- 🔒 会话管理:复用会话,支持多步爬取。
- 🧩 代理支持:连接带认证的代理,确保安全访问。
- 🌍 多浏览器支持:兼容 Chromium、Firefox 和 WebKit。
🔎 爬取与抓取 - 🖼️ 媒体提取:支持图片、音频、视频等资源的爬取。
- 🚀 动态爬取:执行 JS 并等待异步内容加载。
- 📸 截图功能:在爬取过程中截屏,便于调试和分析。
- 🔗 链接提取:提取内外部链接及 iframe 内容。

🔬 高级用法示例

📚 使用 LLM 提取结构化数据 python import os import asyncio from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, LLMConfig from crawl4ai.extraction_strategy import LLMExtractionStrategy async def main(): browser_config = BrowserConfig(verbose=True) run_config = CrawlerRunConfig( extraction_strategy=LLMExtractionStrategy( llm_config=LLMConfig(provider="openai/gpt-4o", api_token=os.getenv('OPENAI_API_KEY')), instruction="提取所有产品价格。", ) ) async with AsyncWebCrawler(config=browser_config) as crawler: result = await crawler.arun( url="https://www.example.com/products", config=run_config ) print(result.extracted_content) if __name__ == "__main__": asyncio.run(main())