Crawl4AI 快速上手:AI 友好爬虫,5 分钟把网页转成 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
Crawl4AI 是一个面向大模型场景的开源网页爬虫与抓取工具(LLM Friendly Web Crawler & Scraper)。它把网页自动渲染并转换成干净、结构化的 Markdown 或 JSON,输出可直接喂给 RAG 系统、AI 智能体和数据管道,省去你手写 HTML 解析与清洗规则的工作。
它是怎么工作的:渲染、转换、提取三步走
Crawl4AI 的爬取过程分三步:先用无头浏览器(不显示界面的真实浏览器内核,默认 Chromium)执行页面 JavaScript,等动态内容加载完成;再把 HTML 自动转成 Markdown,标题、表格、代码块、链接引用都保留结构;最后按需提取——可以用 CSS 选择器或 XPath 指定位置取数,也可以把页面内容交给大模型(LLM,即语言大模型),按你写的指令或 schema 输出 JSON。
打个比方:传统爬虫拿到的是"没印刷好的空壳报纸",Crawl4AI 则像一位会排版、会划重点的助理——先把报纸完整印出来,再按你的要求整理成文档和表格。
快速上手:安装并跑通第一次爬取
先安装并初始化浏览器依赖:
pip install -U crawl4ai crawl4ai-setup下面的最小脚本爬取一个新闻页面并打印 Markdown 输出:
import asyncio from crawl4ai import AsyncWebCrawler async def main(): async with AsyncWebCrawler() as crawler: result = await crawler.arun(url="https://www.nbcnews.com/business") print(result.markdown[:500]) if __name__ == "__main__": asyncio.run(main())运行后你会看到:页面正文被整理成带标题、列表和编号引用的干净 Markdown,不再夹杂广告、导航栏和脚本代码,可以直接作为大模型输入或存入知识库。
这些场景能落地
构建 RAG 知识库:整站内容转成干净的 Markdown 文档,链接自动变成编号引用列表,省去"HTML 转文本"的清洗环节,文档可以直接切块、入库,供检索增强生成使用。
列表页批量提取:商品、房源、课程这类重复结构的页面,用 CSS 选择器或 schema 定义字段,输出 JSON 字符串;也支持一次性让大模型生成可复用的 schema,后续提取不再依赖模型调用,零 token 成本。
处理动态页面:支持注入自定义 JavaScript(js_code)、等待特定元素、模拟滚动加载无限流内容,并通过会话(session)复用登录状态,处理需要点击"加载更多"或已登录才能看到的页面。
用 LLM 做智能提取:页面结构不规整时,把提取策略换成 LLM 驱动,用自然语言指令加 Pydantic 结构体描述想要的字段,从非结构化正文中拿到规整 JSON。
效果对比:与传统做法相比
| 维度 | 传统做法(requests + 手写解析) | Crawl4AI |
|---|---|---|
| 动态内容 | JS 渲染页面常只抓到空 HTML 骨架 | 内置浏览器渲染,等待加载完成 |
| 输出格式 | 自己写规则转文本,广告导航混在其中 | 自动转结构化 Markdown,含标题、表格、引用 |
| 数据提取 | 每类页面单独写解析代码 | CSS 选择器或 LLM 策略统一出 JSON |
| 批量任务 | 自己写线程池、缓存、重试 | 内置并发调度与缓存,arun_many按内存自适应控制 |
常见问题与调优
首次安装后页面加载失败:先执行crawl4ai-setup安装浏览器依赖,仍异常时手动运行python -m playwright install --with-deps chromium,再用crawl4ai-doctor检查环境。
结果和内容不一致,怀疑是缓存:Crawl4AI 的默认缓存模式是CacheMode.BYPASS,每次都抓新鲜内容;只有显式设置为CacheMode.ENABLED才启用缓存。调试阶段保持默认即可。
动态页面内容不全:在CrawlerRunConfig中调大page_timeout(页面加载超时,单位毫秒),或用wait_for指定等待的元素选择器;无限滚动页面可开启模拟滚动(full page scanning)让内容全部加载。
批量任务太慢或太占内存:优先用arun_many()而不是自己开循环,内置的内存自适应调度器会根据系统资源自动调整并发数;开启流式模式(stream=True)可以边完成边处理结果。
爬取失败怎么定位:检查result.success与result.error_message;需要过滤掉噪音正文时,给 Markdown 生成器配上内容过滤器,读result.markdown.fit_markdown而非原始输出。
参与贡献
仓库地址:https://gitcode.com/GitHub_Trending/craw/crawl4ai ,欢迎提交 Issue 和 Pull Request,也可加入官方 Discord 社区交流。
现在安装 Crawl4AI,爬出你的第一个 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),仅供参考