Crawl4AI

面向模型与 RAG 的网页抓取库,支持浏览器渲染、Markdown 与结构化提取。

📅 收录: 2026-10-15 🔄 更新: 2026-10-15

Crawl4AI 快速入门:从一个网页得到可核对的 Markdown

这是什么?适合谁?

Crawl4AI 是面向 LLM、RAG 与数据管道的网页抓取工具。开源 Python 库通过浏览器访问页面,把页面转换为 Markdown,也提供 CSS、XPath 与 LLM 结构化提取策略。

适合需要把获准采集的文档站、产品说明或公开知识页面转换为检索材料的开发者。它解决的是“如何拿到可处理的页面内容”,不是替你判定内容真实、授权范围或采集是否合法。

这里主要介绍自己运行开源库的路径。官方另有自行托管的服务端和 Crawl4AI Cloud;三种部署方式的账户、费用、密钥与接口不能混为一谈。

核验日期为 2026-10-15。本文没有把 README 中的速度宣传当作独立测试成绩,也不承诺任何网站都能抓取成功。

准备工作

  • 准备 Python 虚拟环境,兼容版本以当前包元数据与安装文档为准。
  • 需要联网下载 Python 包和浏览器运行文件,并有本机安装权限。
  • 选一个允许抓取、不含登录态和敏感信息的网页作为首个目标。
  • 开源基础抓取与 Markdown 转换不要求 LLM API Key;选择模型提取时另行配置模型服务。
  • 先确定输出保存目录,避免把完整网页、Cookie 或日志提交到代码仓库。

三步快速上手

第一步:隔离安装

python -m venv .venv

在 macOS/Linux 中激活:

source .venv/bin/activate

在 Windows PowerShell 中激活:

.venv\Scripts\Activate.ps1

安装库并准备浏览器:

python -m pip install -U crawl4ai
crawl4ai-setup
crawl4ai-doctor

setup 用于浏览器准备,doctor 用于检查安装。若脚本找不到,先确认当前终端确实使用刚创建的虚拟环境。

第二步:运行最小页面转换

把下面代码保存为 first_crawl.py。这是根据官方快速入门改写的教学示例,不是本站执行日志。

import asyncio
from pathlib import Path
from crawl4ai import AsyncWebCrawler

async def main():
    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(url="https://example.com")
        if not result.success:
            raise RuntimeError(result.error_message)
        markdown = str(result.markdown)
        Path("example.md").write_text(markdown, encoding="utf-8")
        print("已保存 example.md,请打开核对正文")

if __name__ == "__main__":
    asyncio.run(main())

运行:

python first_crawl.py

预期结果是在当前目录得到 example.md。成功判定还需打开文件,确认包含目标页面正文,而非错误提示、登录页或空白内容。

第三步:替换为获准采集的真实页面

只改脚本里的 URL,再运行一次。把浏览器可见标题、正文段落与输出逐段核对,尤其关注表格、导航、日期和链接。

第一个可交付任务可以限定为“一篇文档转 Markdown,保存原始 URL,并标出遗漏内容”。不要在尚未验证内容完整性时直接扩展到整个站点。

初级用法

1. 区分浏览器配置与抓取配置

BrowserConfig 管浏览器行为,CrawlerRunConfig 管本次抓取参数。分开配置有助于判断问题发生在浏览器启动、网络访问还是内容提取阶段。

2. 对照原始与过滤后的 Markdown

官方文档区分 result.markdown 与经过过滤的 fit_markdown。过滤能减少导航噪音,也可能删除短段落;关键日期或价格段落必须对照原页。

3. 用错误信息建立失败记录

保留目标 URL、运行时间和 error_message,不要把失败结果写成成功正文。如果返回的是验证页,即使 HTTP 成功也不能视为目标文章采集成功。

高级玩法

1. 用 CSS/XPath 处理稳定页面

当商品卡片或目录结构稳定时,优先研究 JsonCssExtractionStrategy 或 JsonXPathExtractionStrategy。先对单页手工确认选择器,再把结果接入数据管道。

这种路径不依赖模型猜字段,但依赖页面结构。网站改版后必须复查,不能因为 JSON 能解析就认为字段正确。

2. 为动态页面设置明确等待条件

对于 JavaScript 加载的页面,先确认目标元素何时出现,再配置抓取等待逻辑。不要简单把所有页面的等待时间拉长,也不要把抓取工具当作绕过访问控制的手段。

3. 扩展到多 URL 时控制并发

官方提供 arun_many 等批量能力。先用少量 URL 观察错误率和内存,再设置站点级速率上限;失败重试要有次数限制,避免持续压迫目标站。

五个小技巧

  1. 先用普通静态页面确认环境,再测试复杂前端站点,区分环境问题与站点问题。
  2. Markdown 与来源 URL 一起保存,后续检索结果才有回到原页的路径。
  3. 对关键字段保留原文片段,而不是只保存模型提取的结论。
  4. 为不同域名分别设置访问节奏,不要用一个全局高并发覆盖全部来源。
  5. 变更过滤器后对照固定样本,检查是否把正文误删成只有标题。

常见踩坑

  • 踩坑 1:装了包却启动不了浏览器。 包安装不等于浏览器准备完成;先执行 crawl4ai-setup 和 crawl4ai-doctor,按诊断结果处理系统依赖。
  • 踩坑 2:脚本能运行却正文为空。 页面可能依赖 JavaScript、登录或验证;先在普通浏览器确认访问权限,再检查等待和提取条件。
  • 踩坑 3:抓到了旧内容却以为是新页面。 核对缓存配置和原页日期;需要新鲜内容时按官方文档研究 CacheMode.BYPASS,而非依赖默认行为猜测。
  • 踩坑 4:过滤器删除了关键短段落。 把原始 Markdown 与过滤输出对照,调整过滤策略;不要只看字符数减少就认为质量更好。
  • 踩坑 5:把开源库的免费理解为模型免费。 LLM 提取、云服务、代理和服务器资源可能收费,基础 HTML 转换与这些支出需分别预算。
  • 踩坑 6:把 JSON 合法当作内容真实。 模型提取可能漏字段或改写数字;为每个重要字段保留原文依据,不确定时标空而不是补猜。
  • 踩坑 7:批量抓取失控。 先设 URL 范围、数量和并发边界,遇到拒绝访问及时停止;不要自动追随无限分页或任意外链。

权限、安全与成本边界

只采集你有权访问和保存的内容,并遵守目标站服务条款、robots 约束及适用法律。公开可见不自动意味着允许批量再分发。

登录 Cookie、持久化浏览器配置和请求头都可能包含凭据。使用专门测试账户,限制配置目录权限,不把它们作为普通日志分享。

基础开源库本机运行不等于任何提取方式都离线。选择外部 LLM 时,页面片段可能被发送给模型服务;切换到云抓取时,URL 与相关数据进入云端链路。

云套餐和额度会变化,本文不写死促销价格。先估算抓取页数、模型调用和代理成本,再决定是否使用托管服务。

常见问题 FAQ

Q1:不配置模型密钥能用吗?

A:基础网页抓取与 Markdown 转换可以;使用 LLM 提取策略时才需相应模型配置和费用预算。

Q2:能保证所有 JavaScript 网页都成功吗?

A:不能。权限、反自动化措施、页面状态和等待条件都会影响结果,工具能力不等于访问授权。

Q3:已经有 Requests,为什么还考虑它?

A:当你需要浏览器渲染和面向模型的 Markdown 管道时可以评估;简单静态请求未必需要启动浏览器。

Q4:能直接把输出全部塞进知识库吗?

A:建议先去重、记录来源并检查正文完整性;错误页和过期内容进入索引会影响后续回答。

Q5:是否必须使用 Cloud?

A:不必。开源库、自己托管的服务与官方 Cloud 是不同部署选择,应按运维能力与数据边界决定。

局限与声明

本文基于公开资料整理,未进行浏览器安装、站点兼容性、吞吐或安全的独立实测。示例代码是可供读者执行的教学路径,不是已经跑通的本站测试记录;平台依赖和接口以当前官方文档为准。

参考链接

📊 评分与标签

评分说明

总分 8.7/10 · P_优选

核验日期:2026-10-15。评估对象以开源 Python 库为主,官方 Cloud 与自行托管服务仅作部署选择说明,不把托管承诺转移给本地库。

可观测社区指标

  • 官方 GitHub API:85,561 stars,8,880 forks;最近推送 2026-10-15T02:21:39Z,采集日期 2026-10-15。
  • 官方仓库 标注 Apache-2.0 许可。Stars 不等于实际安装、活跃用户或稳定性保证。

⚙️ 功能完整度 2.3/2.5

  • 覆盖浏览器抓取、Markdown、CSS/XPath/LLM 提取、批量任务和动态页面控制,适合构建面向模型的数据入口。
  • 基础库、Docker 服务与 Cloud 的接口不相同;任意网站可用性与访问授权不能由功能列表推出,保留边界扣分。
  • 来源:官方能力与部署说明。
  • 对比 Firecrawl:同样提供面向模型的网页数据与托管入口;本项不把 Crawl4AI 的自运行路线写成 Firecrawl 完全不支持部署。来源:Firecrawl。
  • 对比 Scrapy:Scrapy 是结构化抓取框架,Crawl4AI 的入口更围绕浏览器与 Markdown;应按任务选择,非全面替代。来源:Scrapy。

✨ 输出质量 2.2/2.5

  • 官方提供原始 Markdown 与过滤结果,能保留标题、列表和链接,并按策略提取结构化字段。
  • 过滤可能删正文、页面可能返回验证内容、LLM 可能改写字段;本站未测准确率,不以格式正确代替内容核对。
  • 来源:官方快速入门源码。
  • 对比 Firecrawl:两者都有 Markdown/JSON 输出,缺少统一页面实测时不宣称哪方“更干净”或覆盖率更高。来源:Firecrawl 输出。
  • 对比 Scrapy:后者侧重结构化提取框架;若目标是模型阅读材料,Crawl4AI 的 Markdown 管道更贴合本评估任务,但不代表字段准确率胜出。来源:Scrapy。

🖐️ 易用性 1.2/1.5

  • 官方给出 pip install、crawl4ai-setup、crawl4ai-doctor 和最小异步示例,有可循序验证的入口。
  • 浏览器二进制、系统依赖、异步代码与动态页配置仍增加门槛,因此不按“一条命令适配所有站点”给满分。
  • 来源:官方安装。
  • 对比 Firecrawl:其托管 API Key 快速入门减少本机浏览器维护;Crawl4AI 自运行允许更直接控制环境,但把运维留给使用者。来源:Firecrawl 入门。
  • 对比 Scrapy:两者都面向开发者,Crawl4AI 的单页示例便于开始,复杂抓取仍需要工程配置。来源:Scrapy 入门入口。

💰 性价比 1.4/1.5

  • 开源库基础抓取与 Markdown 转换无需购买模型提取额度;适合已有机器和 Python 能力的使用者。
  • 模型、代理、服务器与 Cloud 可能分别收费,未独立量化总拥有成本;本文不将软启动或促销价作长期承诺。
  • 来源:官方自运行与 Cloud 区别。
  • 对比 Firecrawl:托管便利与自行运行的资源消耗应分别计价,本项不引用未经当前页面核对的套餐差价。来源:Firecrawl 托管入口。
  • 对比 Scrapy:本地抓取框架也需要计算、网络和维护;选型应比较开发成本,而非只比较代码许可。来源:Scrapy。

🔒 稳定性 0.8/1.0

  • 有安装诊断、缓存控制和多 URL 执行能力,官方仓库近期持续推送。
  • 浏览器启动、目标站策略和页面结构变化均会影响成功率;没有本站长期运行数据,不承诺 SLA 或百分比可用率。
  • 来源:官方安装与运行说明、当前仓库状态。
  • 对比 Firecrawl:托管与自运行的故障责任不同,官方宣传数据不能互当本站稳定性结论。来源:Firecrawl。
  • 对比 Scrapy:两者都依赖目标页面和网络;不能用项目关注量推断对某个站点更稳定。来源:Scrapy。

🛡️ 隐私安全 0.8/1.0

  • 自运行库允许在自己的进程里处理页面,CSS/XPath 提取不必把正文交给外部模型。
  • Cookie、浏览器状态和外部 LLM 提取会改变数据边界;抓取能力不等于绕过权限或再分发授权,因此不作绝对安全承诺。
  • 来源:官方浏览器与提取策略说明。
  • 对比 Firecrawl:采用其托管接口会引入托管数据链路;Crawl4AI 选 Cloud 同样不能再称完全本地。来源:Firecrawl、Crawl4AI 部署说明。
  • 对比 Scrapy:本地框架不自动解决凭据、目标授权和数据保留问题,这些责任仍由使用者落实。来源:Scrapy。

评分依据可追溯至公开来源;分数代表面向开发者的数据入口适用性判断,不是对目标网站的访问成功承诺。

标签说明

  • 开源免费:开源库采用 Apache-2.0;不包含 Cloud、模型、代理和算力全免的含义。来源:官方仓库。
  • 网页抓取:核心入口为 AsyncWebCrawler 及浏览器抓取配置。来源:官方快速入门。
  • RAG:官方定位包含为检索增强与模型应用提供 Markdown 数据,不表示该库本身完成了答案事实核验。来源:官方定位。

局限与声明

本文基于公开资料整理,未做安装、浏览器兼容性、反自动化场景、吞吐或安全的独立实测。重要内容应对照原页,抓取必须遵守访问权限、目标站条款与适用法律;没有为批量绕过验证提供授权。

来源核实

  • 已读取官方 README 和快速入门源码,核对安装命令、异步示例、部署区别与提取策略。
  • 已查询官方 GitHub API,记录许可、stars、forks、最近推送和非归档状态。
  • 已读取 Firecrawl 与 Scrapy 官方 README;比较限于产品定位,不采用供应商速度与覆盖率宣传作本站跑分。

同分类推荐

AI开发平台 分类下的其他工具

)}