
Crawl4AI 实战手册把一个网页变成 LLM 能直接吃的 Markdown【免费下载链接】crawl4ai Crawl4AI: Open-source LLM Friendly Web Crawler Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai把一个新闻页 URL 交给 crawl4ai 的 AsyncWebCrawler拿回来的是去掉导航、广告、弹窗后的干净 Markdown可以直接喂给 LLM。下面是最小路径一条命令装好依赖、在动态页面点按钮、用 CSS 选择器抽出列表最后说几个新手最卡壳的地方。 能力速览Markdown 生成把 HTML 转成两种口径的 Markdownraw_markdown 是整页fit_markdown 裁掉了页头页脚等样板内容。JS 执行arun 时注入 js_code可以点按钮、展开选项卡、滚动触发懒加载脚本在抓取 HTML 之前跑完。结构化提取JsonCssExtractionStrategy 按 CSS 选择器把字段直接写成 JSON不依赖 LLM速度快、零 token 成本。语义提取CosineStrategy 用词共现聚类从长文里找出和你主题最接近的段落。深度爬取BFSDeepCrawlStrategy / DFSDeepCrawlStrategy 按深度递归抓站内页面带过滤器和评分器。异步并发arun_many 配合 dispatcher 在一个进程里并行爬多组 URL。 实战任务从静态页到动态页一条命令装好依赖并抓到第一份 Markdownpip install -U crawl4ai # 装核心包 crawl4ai-setup # 顺带下载 Chromium 和系统依赖 crawl4ai-doctor # 验证浏览器是否就绪import asyncio from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode async def main(): async with AsyncWebCrawler(configBrowserConfig(headlessTrue)) as crawler: # BYPASS 关掉缓存避免调试时反复拿到上次抓好的旧内容 config CrawlerRunConfig(cache_modeCacheMode.BYPASS) result await crawler.arun( urlhttps://www.nbcnews.com/business, configconfig ) print(len(result.markdown.raw_markdown), len(result.markdown.fit_markdown)) asyncio.run(main())输出是两个数量级不同的数字比如几千字符对一两千字符前者是整页后者是裁完样板的正文。首次爬取要秒级浏览器冷启动之后会快一些。参数怎么配直接翻 quickstart 里的完整示例。用 JS 片段点掉Load More新闻聚合站、商品列表页常见一种结构首屏只有十条剩下靠按钮加载。写法是把点击脚本交给 js_codejs_code const btn Array.from(document.querySelectorAll(button)) .find(b b.textContent.includes(Load More)); btn btn.click(); config CrawlerRunConfig( cache_modeCacheMode.BYPASS, js_codejs_code, delay_before_return_html1, # 点完等 1 秒让新内容渲染出来再抓 ) result await crawler.arun(urlurl, configconfig)js_code 在页面加载后、收集 HTML 前执行所以点击、展开、滚动产生的新内容都会被收进 result.markdown。如果新内容的选择器稳定把 delay_before_return_html 换成 wait_for.content-loaded 更精确不用盲等。用 CSS 选择器只抽列表节点整页抓回来太大时css_selector 让 Crawl4AI 只收集匹配的节点。以 GitHub 提交列表为例config CrawlerRunConfig( cache_modeCacheMode.BYPASS, css_selectorli.Box-sc-g0xbh4-0, # 只收集匹配该选择器的节点 ) result await crawler.arun(urlurl, configconfig)一个几 MB 的页面会被压到几 KB 的 Markdown。需要标题、链接、时间戳这类字段时把 css_selector 换成 JsonCssExtractionStrategy 配一个 schema拿到的就是 JSON 字符串可以 json.loads 直接用。️ 容易踩的 3 个坑第一次运行卡住或报浏览器启动失败只装了 pip 包Playwright 的浏览器还没下载。跑一次 crawl4ai-setup或手动执行python -m playwright install chromium。同一个 URL 第二次爬到的是旧内容默认缓存模式是 ENABLED命中本地数据库就不再访问网站。调试阶段用 CacheMode.BYPASS确认稳定后再切回 ENABLED能省掉大量重复请求。动态内容为空抓取那一刻页面还没加载完。用 wait_for 等一个具体选择器或给 delay_before_return_html 加 1~2 秒如果目标站有反爬检测 headless在 CrawlerRunConfig 里加 override_navigatorTrue 抹掉部分浏览器指纹。适合做 RAG 数据管道、或单纯想把网页批量变 Markdown 的场景如果你要协议级精细控制浏览器直接上 Playwright 更省事。下一步就去 docs/examples/ 挑一个最接近你业务的示例跑一遍比如 深度爬取的完整写法。【免费下载链接】crawl4ai Crawl4AI: Open-source LLM Friendly Web Crawler Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考