news 2026/8/29 10:29:03

Crawl4AI 实战手册:把一个网页变成 LLM 能直接吃的 Markdown

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Crawl4AI 实战手册:把一个网页变成 LLM 能直接吃的 Markdown

Crawl4AI 实战手册:把一个网页变成 LLM 能直接吃的 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

把一个新闻页 URL 交给 crawl4ai 的 AsyncWebCrawler,拿回来的是去掉导航、广告、弹窗后的干净 Markdown,可以直接喂给 LLM。下面是最小路径:一条命令装好依赖、在动态页面点按钮、用 CSS 选择器抽出列表,最后说几个新手最卡壳的地方。

🧭 能力速览

  • Markdown 生成:把 HTML 转成两种口径的 Markdown,raw_markdown 是整页,fit_markdown 裁掉了页头页脚等样板内容。
  • JS 执行:arun 时注入 js_code,可以点按钮、展开选项卡、滚动触发懒加载,脚本在抓取 HTML 之前跑完。
  • 结构化提取:JsonCssExtractionStrategy 按 CSS 选择器把字段直接写成 JSON,不依赖 LLM,速度快、零 token 成本。
  • 语义提取:CosineStrategy 用词共现聚类,从长文里找出和你主题最接近的段落。
  • 深度爬取:BFSDeepCrawlStrategy / DFSDeepCrawlStrategy 按深度递归抓站内页面,带过滤器和评分器。
  • 异步并发:arun_many 配合 dispatcher 在一个进程里并行爬多组 URL。

🔧 实战任务:从静态页到动态页

一条命令装好依赖并抓到第一份 Markdown

pip install -U crawl4ai # 装核心包 crawl4ai-setup # 顺带下载 Chromium 和系统依赖 crawl4ai-doctor # 验证浏览器是否就绪
import asyncio from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode async def main(): async with AsyncWebCrawler(config=BrowserConfig(headless=True)) as crawler: # BYPASS 关掉缓存,避免调试时反复拿到上次抓好的旧内容 config = CrawlerRunConfig(cache_mode=CacheMode.BYPASS) result = await crawler.arun( url="https://www.nbcnews.com/business", config=config ) print(len(result.markdown.raw_markdown), len(result.markdown.fit_markdown)) asyncio.run(main())

输出是两个数量级不同的数字,比如几千字符对一两千字符:前者是整页,后者是裁完样板的正文。首次爬取要秒级(浏览器冷启动),之后会快一些。参数怎么配,直接翻 quickstart 里的完整示例。

用 JS 片段点掉"Load More"

新闻聚合站、商品列表页常见一种结构:首屏只有十条,剩下靠按钮加载。写法是把点击脚本交给 js_code:

js_code = """ const btn = Array.from(document.querySelectorAll('button')) .find(b => b.textContent.includes('Load More')); btn && btn.click(); """ config = CrawlerRunConfig( cache_mode=CacheMode.BYPASS, js_code=js_code, delay_before_return_html=1, # 点完等 1 秒让新内容渲染出来再抓 ) result = await crawler.arun(url=url, config=config)

js_code 在页面加载后、收集 HTML 前执行,所以点击、展开、滚动产生的新内容都会被收进 result.markdown。如果新内容的选择器稳定,把 delay_before_return_html 换成 wait_for=".content-loaded" 更精确,不用盲等。

用 CSS 选择器只抽列表节点

整页抓回来太大时,css_selector 让 Crawl4AI 只收集匹配的节点。以 GitHub 提交列表为例:

config = CrawlerRunConfig( cache_mode=CacheMode.BYPASS, css_selector="li.Box-sc-g0xbh4-0", # 只收集匹配该选择器的节点 ) result = await crawler.arun(url=url, config=config)

一个几 MB 的页面会被压到几 KB 的 Markdown。需要标题、链接、时间戳这类字段时,把 css_selector 换成 JsonCssExtractionStrategy 配一个 schema,拿到的就是 JSON 字符串,可以 json.loads 直接用。

🕳️ 容易踩的 3 个坑

  1. 第一次运行卡住或报浏览器启动失败:只装了 pip 包,Playwright 的浏览器还没下载。跑一次 crawl4ai-setup,或手动执行python -m playwright install chromium
  2. 同一个 URL 第二次爬到的是旧内容:默认缓存模式是 ENABLED,命中本地数据库就不再访问网站。调试阶段用 CacheMode.BYPASS;确认稳定后再切回 ENABLED,能省掉大量重复请求。
  3. 动态内容为空:抓取那一刻页面还没加载完。用 wait_for 等一个具体选择器,或给 delay_before_return_html 加 1~2 秒;如果目标站有反爬检测 headless,在 CrawlerRunConfig 里加 override_navigator=True 抹掉部分浏览器指纹。

适合做 RAG 数据管道、或单纯想把网页批量变 Markdown 的场景;如果你要协议级精细控制浏览器,直接上 Playwright 更省事。下一步就去 docs/examples/ 挑一个最接近你业务的示例跑一遍,比如 深度爬取的完整写法。

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 10:28:45

用 Ventoy 制作多系统启动盘:装一次,拷镜像即用

用 Ventoy 制作多系统启动盘:装一次,拷镜像即用 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy Ventoy 是一款开源的多系统启动盘方案:在 U 盘上安装一次引导程序后…

作者头像 李华
网站建设 2026/8/29 10:27:10

嵌入式事件记录器设计:从事件队列到Flash存储的实战解析

1. 项目背景与核心需求解析 最近在整理过往的竞赛资料,翻到了第五届蓝桥杯国赛的一道嵌入式系统设计题——“多功能事件记录器”。这道题当年在赛场上给不少选手带来了不小的挑战,它不像一些纯算法题那样有明确的输入输出,而是要求你从零开始…

作者头像 李华
网站建设 2026/8/29 10:26:46

蓝桥杯Python国赛真题解析:动态规划与搜索算法实战指南

1. 从真题到实战:蓝桥杯Python国赛的深度价值 如果你是一名计算机或相关专业的学生,或者是一位希望通过竞赛提升编程能力的自学者,那么“蓝桥杯”这个名字你一定不陌生。尤其是它的全国总决赛,更是高手云集、题目极具挑战性的舞台…

作者头像 李华
网站建设 2026/8/29 10:25:41

谷歌浏览器正确下载与安装避坑指南:识别官方来源,打好AI基础

“一哥已经可以靠 AI 自给自足了,二哥却连浏览器都下不明白”,这句段子最近在不少技术群里被反复提起。它说的其实不是两个人,而是很多人在技术入门阶段的两极分化:一部分人已经拿 AI 当生产力工具,写文案、做图、排代…

作者头像 李华
网站建设 2026/8/29 10:25:11

手眼标定实战:Kinect2与Astra在Aubo机械臂上的完整标定指南

简介:在机器人视觉引导系统中,坐标系的统一是实现精准抓取与装配的基础。手眼标定是连接相机与机械臂坐标系的关键步骤,其核心原理基于AXXB方程,通过多姿态采样求解相机与机械臂之间的固定变换。眼在手外(Eye-to-Hand&…

作者头像 李华