Crawl4AI 完全指南:3 步把任意网页变成 LLM 能用的数据
2026/8/29 9:47:59 网站建设 项目流程

Crawl4AI 完全指南:3 步把任意网页变成 LLM 能用的数据

【免费下载链接】crawl4ai🚀🤖 Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Don't be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai

Crawl4AI 是一个开源的、对 LLM 友好的网页爬虫与抓取工具(Web Crawler & Scraper):它用真实浏览器打开网页,自动转成干净的 Markdown,还能用一句话指令提取结构化数据。登录页、动态加载、无限滚动这些老麻烦,它基本都能替你先扛下来。

它到底是什么

Crawl4AI 是一个 Python 库加一套命令行工具,定位是"给 AI 喂数据的中间层":你给它一个网址,它还给你可以直接塞进 RAG、Agent 或数据管道的 Markdown,外加按你要求格式化的 JSON。

它和传统做法的本质差异在于:传统爬虫(比如 requests + 解析库)拿到的是"死"HTML,遇到 JS 渲染、登录态、懒加载就得自己一堆补丁;Crawl4AI 底层挂的是 Playwright 真实浏览器,页面是"活"的——渲染完、滚动完、登录完再交给它处理。

pip install -U crawl4ai crawl4ai-setup # 自动安装并配置浏览器 crawl4ai-doctor # 验证安装是否正常

装好后,不想写 Python 也能直接用命令行抓一个页面:

crwl https://www.nbcnews.com/business -o markdown

想从源码开始看的话,仓库地址是https://gitcode.com/GitHub_Trending/craw/crawl4ai

它替你扛下的 3 件烦心事

烦心事一:登录墙后面的数据,每次都要重新登录

痛点:目标网站要登录才能看数据。老办法是把 Cookie 存下来复放,结果会话一过期全白干,遇到验证码、双因素认证更是没法写代码硬绕。

解法:Crawl4AI 的"身份配置文件"(Profile)不是存几个 Cookie,而是保存一整个独立浏览器档案——Cookie、LocalStorage、浏览器指纹全在里面,存在~/.crawl4ai/profiles/<名字>目录。相当于你有一台"已经登录好的电脑",下次爬取直接复用这个身份。你在自己的浏览器里能看见的数据,就能用这个身份去自动化抓取。

上手

crwl profiles # 打开交互式管理界面 # 选 2 创建 → 起个名(如 my-bank)→ 弹出浏览器 → 手动登录 → 终端按 q 保存 crwl https://bank-portal.com/statements -p my-bank -o json

⚠️提醒:档案里的登录态会过期,它不能让你"一次登录、永久有效";正确姿势是定期重登刷新档案,把"重新登录"从每次任务变成偶尔维护。

烦心事二:页面是动态的,抓回来的内容总是缺半边

痛点:产品列表滚动才加载、点"加载更多"才出下一页、内容用 JavaScript 事后渲染。静态抓包只能拿到初始骨架,数据缺一大截。

解法:因为跑在真实浏览器里,Crawl4AI 给了你几种现成的"翻页手":scan_full_page会在返回前把整页滚一遍,把懒加载内容全部触发出来;对"加载更多"按钮这类交互,可以直接在任务里注入一段 JS 模拟点击;针对 Twitter/Instagram 那种"虚拟滚动"(旧内容会被从 DOM 里删掉、只保留可视区的渲染方式),内置了 VirtualScroll 处理,滚动时自动把被替换掉的内容累积起来,不会只抓到当前屏幕那一条。

上手

crwl https://shop.example.com/products -c "scan_full_page=true,delay_before_return_html=2"

想点按钮、等动画,就在配置里加一段 JS 执行,参考 docs/examples/assets/css_js.png 对应的示例 css_js 用法。

⚠️提醒:别靠无脑加大delay_before_return_html去"赌"内容加载完——固定长延迟只是拖慢速度,不如配合全页扫描或明确等待条件来得稳。

烦心事三:抓回来的 HTML 一团糟,没法喂给 LLM 或入库

痛点:就算页面抓全了,HTML 里混着导航栏、广告、脚本文本。你要么手写一堆 CSS 选择器逐站维护,要么把脏 HTML 直接丢给大模型,又贵又不准。

解法:Crawl4AI 默认就把 HTML 转成结构化 Markdown(标题、表格、链接都保留),链接还会自动转成编号引用列表。在这个基础上提供双模式提取:站点结构稳定就用 CSS/XPath 选择器 + 自定义 schema,按固定格式吐 JSON,快且零额外成本;站点结构多变或需要"语义级"理解(比如"把每篇新闻的标题、日期、核心观点摘出来"),就挂一个 LLM 提取策略,用自然语言指令下需求,底层支持各家模型。另外还有个 Cosine 策略,按"语义相似度"筛出和查询最相关的段落,适合从长文里定位关键内容。

上手:结构稳定时用-e 指定YAML规则 -s 指定JSON schema两个参数即可;需要语义提取时直接在命令行加一句自然语言指令(如-q "Extract all product prices"),或在代码里指定LLMExtractionStrategy。规则文件写法见 提取策略文档。

⚠️提醒:不是"有 LLM 就用 LLM"。结构固定的页面用选择器提取速度快好几倍还省钱,LLM 模式留给结构多变、需要语义判断的场景,两种混着用才是正解。

走一遍真实场景:给 RAG 知识库批量喂行业资讯

假设你要做一个竞品监控:每周抓取 3 个电商站的列表页,提取价格存库,同时把商品详情转成 Markdown 存进向量库。按这个需求拆一下选型:

  1. 列表页要滚动才全→ 开启全页扫描;
  2. 其中 1 个站要登录→ 提前建好 Profile;
  3. 详情页结构各异、经常改版→ 直接出 Markdown,不用写选择器;
  4. 价格字段要稳定入库→ 对列表页用 CSS 提取加 schema。

落地代码大概就是这样一个异步主循环(完整的配置项说明可查 CrawlerResult 文档):

import asyncio from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CSSExtractionStrategy async def main(): run_conf = CrawlerRunConfig( scan_full_page=True, extraction_strategy=CSSExtractionStrategy(schema="product_schema.json"), ) async with AsyncWebCrawler(config=BrowserConfig(user_data_dir="~/.crawl4ai/profiles/shop_b")) as crawler: result = await crawler.arun("https://shop-b.com/list", config=run_conf) print(result.extracted_content[:200]) # 价格 JSON print(result.markdown.fit_markdown[:200]) # 干净 Markdown 入向量库 asyncio.run(main())

页面多了以后不用自己写并发,Dispatcher 会做批量调度并在终端里实时显示每个任务的状态、耗时和内存占用:

横向对比:它和其他方案差在哪

维度Crawl4AI传统框架(Scrapy 类)无代码抓取工具商业 API 服务
JS 动态页面内置浏览器,滚动/交互/虚拟滚动都有现成配置需自己集成 Selenium/Playwright基础支持,复杂交互受限取决于服务商
登录与身份Profile 保存完整浏览器档案手动管理 Cookie通常只存 Cookie大多不支持
输出格式默认 LLM 友好 Markdown + 引用,可直接入 RAGHTML 为主,需自行清洗视产品而定固定格式
结构化提取CSS/LLM/Cosine 多策略可混用XPath/CSS,规则全靠手写可视化选元素,改版即失效能力封闭
成本与可控性免费开源,本地/Docker 自托管,无配额免费但工程量大多有次数限制按量收费

一句话定位:Scrapy 是给你"管道零件"自己装,无代码工具是"帮你装但装坏了你看不见",Crawl4AI 是装好整机、还附了给 AI 用的说明书。

学习路径:建议按这个顺序读

  1. 快速入门 quickstart —— 第一次抓取、配置对象、两种提取策略各摸一遍;
  2. 命令行 CLI 文档 —— 熟悉crwl的常用参数,适合不想写 Python 的场景;
  3. 虚拟滚动 与 身份化爬取 —— 两个最容易被卡住的点,各花十分钟;
  4. 深度爬取 deep-crawling —— 需要整站抓取时再看;
  5. 示例目录 docs/examples/ —— 里面按场景分好了文件,遇到什么问题先搜同名示例基本都有。

下一步

如果你现在手里就有一个"想看它抓什么"的网址,最直接的第一步是:装好之后跑一句crwl 那个网址 -o markdown,看看它吐出来的 Markdown 干不干净——干净,就说明它适合你的场景;然后照着上面第三步挑一个提取策略,你的数据管道就算通了。

【免费下载链接】crawl4ai🚀🤖 Crawl4AI: Open-source LLM Friendly Web Crawler & Scraper. Don't be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询