
crawl4ai
把网页抓成 LLM 爱吃的干净数据
Crawl4AI 是一个面向大语言模型的开源网页爬虫与抓取工具,用 Python 编写。它解决的核心问题是:传统爬虫抓下来的 HTML 噪声大、结构乱,直接喂给 LLM 既浪费 token 又影响效果。Crawl4AI 在抓取阶段就做清洗和结构化,把网页转成适合 LLM 消费的 Markdown、JSON 等格式,并支持提取正文、链接、媒体等元素。它内置异步并发抓取、浏览器渲染(可处理 JS 动态页面)、代理与反爬策略、缓存和会话管理,还能按 CSS/XPath 或 LLM 指令抽取字段。对做 RAG、AI Agent、数据采集的开发者来说,它把“抓取—清洗—结构化”串成一条流水线,减少自己拼 requests+BeautifulSoup+Playwright 的重复工作,可直接接入向量库或对话系统。
项目数据
使用教程
环境要求
- 已安装 Python 与 pip 环境
- 可访问外网(安装依赖与抓取网页)
- 如需容器部署需已安装 Docker
- 如需修改源码需 git
安装与启动步骤
-
1安装 Crawl4AI
用 pip 安装并升级到最新版,默认装异步版本,底层用 Playwright 抓取网页。
pip install -U crawl4ai -
2初始化运行环境
执行安装后脚本,自动下载并配置 Playwright 浏览器等运行依赖。
crawl4ai-setup -
3检查安装状态
运行自检命令,排查环境与依赖是否就绪;有报错按提示修复。
crawl4ai-doctor -
4手动装浏览器
仅在出现 Playwright/浏览器相关报错时执行,自动安装 chromium 及系统依赖。
python -m playwright install --with-deps chromium -
5运行爬取示例
新建 py 文件写入官方示例,异步抓取指定网页并打印 LLM 友好的 Markdown。
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()) -
6Docker 方式部署
可选方案,拉取官方镜像并以 11235 端口启动服务,共享内存需设为 1g。
docker pull unclecode/crawl4ai:latest docker run -d -p 11235:11235 --name crawl4ai --shm-size=1g unclecode/crawl4ai:latest -
7源码开发安装
适合要改源码的贡献者,克隆仓库后以可编辑模式安装,按需追加可选特性。
git clone https://github.com/unclecode/crawl4ai.git cd crawl4ai pip install -e .
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
BrowserConfig(headless=True) | 否 | 浏览器是否无头运行,示例默认开启无头模式提升速度 | BrowserConfig(headless=True, verbose=True) |
CrawlerRunConfig(cache_mode=CacheMode.EN | 否 | 控制抓取缓存策略,ENABLED 复用缓存、BYPASS 强制重新抓取 | CrawlerRunConfig(cache_mode=CacheMode.BYPASS) |
DefaultMarkdownGenerator(content_filter= | 否 | 指定 Markdown 生成时的内容过滤器,用于裁剪噪声正文 | DefaultMarkdownGenerator(content_filter=PruningContentFilter |
如何确认成功
执行 crawl4ai-doctor 无报错,且运行示例脚本能成功打印出网页的 Markdown 内容即表示正常。
常见问题
Q:提示 Playwright 或浏览器相关错误怎么办?
A:先执行 crawl4ai-setup;若仍报错,手动运行 python -m playwright install --with-deps chromium(或 playwright install)重新安装浏览器。
Q:想要同步版(Selenium)怎么安装?
A:执行 pip install crawl4ai[sync],但官方已标注同步版本废弃、未来会移除,建议直接使用异步版本。
Q:Docker 方式启动后服务在哪个端口?
A:容器以 -p 11235:11235 映射,宿主机通过 11235 端口访问;启动时务必加 --shm-size=1g 避免浏览器崩溃。
Q:想基于源码开发或使用可选特性怎么装?
A:git clone 仓库后进入目录执行 pip install -e .,再按需安装 pip install -e ".[torch]"、".[transformer]"、".[all]" 等可选依赖。
注意事项
- 同步(Selenium)版本已废弃,后续版本将移除,新项目请用异步版本
- Docker 部署必须保留 --shm-size=1g,否则容器内浏览器易内存不足
- pip 安装会默认带上异步版本与 Playwright,务必执行 crawl4ai-setup 完成浏览器初始化
- v0.9.3 为安全修复版本,建议安装/升级到最新版避免已知漏洞
核心亮点
- 抓取即清洗,直接输出 Markdown/JSON,省去二次解析
- 支持异步并发与浏览器渲染,能处理 JS 动态页面
- 内置 CSS/XPath 与 LLM 抽取,可按指令提取结构化字段
不足之处
- 功能面广导致配置项多,新手需要一定学习成本
- 重度依赖浏览器渲染时资源占用和运行成本偏高
适用场景
- 为 RAG 知识库批量采集并清洗网页正文
- AI Agent 实时抓取网页内容作为上下文
- 监控竞品或资讯站点并结构化抽取关键信息
替代项目
Firecrawl、Scrapy
项目介绍
上一篇:llm-pid-tuner
下一篇:mixamo-llm-mocap
同类项目推荐
n8n
开源
拖拽搭建自动化流程,轻松接入 AI 与 400+ 应用,搞定重复工作。
Fair-code workflow automation platform with native AI capabilities. Combine visual b···
robotcode
开源
让 Robot Framework 拥有现代 IDE 体验,调试、补全、运行一气呵成。
Open Source Toolkit for Robot Framework, providing Language Server Protocol support,···
puppeteer
开源
用 JavaScript 轻松操控无头浏览器,搞定自动化测试与网页抓取。
JavaScript API for Chrome and Firefox
customermates
开源
比 Pipedrive 直观 10 倍的现代开源 CRM,轻松管理客户与自动化流程。
Building a modern alternative to Pipedrive that is 10x more intuitive.