乐于分享
好东西不私藏

给 AI 喂数据太难了?这个工具让网页秒变干净 Markdown

给 AI 喂数据太难了?这个工具让网页秒变干净 Markdown

每天刷到那么多好内容,但真正能塞进 AI 的,少得可怜。

你有没有碰到这种情况:想让 Claude 或 GPT 帮你分析一篇文章,把链接扔进去,结果 AI 说"我没办法直接访问网页"。你去手动复制,粘贴过来全是乱七八糟的导航栏、广告、脚注,AI 读得一头雾水,给出的回答质量也大打折扣。

或者更进一步——你想搭一个 RAG 知识库,需要爬几百个页面,每一页都要清洗、提取、结构化,光是这个活儿就能把人逼疯。

今天要介绍的这个工具,专门解决这个问题:Crawl4AI,GitHub 已经超过 40k star,最近在 AI 开发者圈子里频繁被提起,被称为"专门为 LLM 设计的爬虫"。


这是什么?

Crawl4AI 是一个开源的 Python 网页爬取库,但它跟普通爬虫不一样——普通爬虫给你的是 HTML 汤,而 Crawl4AI 给你的是干净的 Markdown,直接可以喂给 AI。

这个项目由独立开发者 @unclecode[1] 发起,核心理念是:既然 LLM 最擅长处理自然语言文本,那就直接把网页转换成 LLM 最好消化的格式,省掉中间所有的数据清洗工作。

几个核心能力:

  • • HTML → Markdown:自动去掉导航栏、广告、侧边栏等噪音,只留正文内容
  • • 结构化提取:用 CSS 选择器或 XPath 提取特定字段,输出 JSON
  • • LLM 提取:直接调 GPT/Claude 来理解页面结构,自动解析复杂表格和非标准排版
  • • 动态页面支持:底层用 Playwright,能处理 JavaScript 渲染、点击按钮、翻页
  • • 批量并发:同时爬几十个 URL,速度很快
  • • 自适应爬取:设定一个问题,让它自动判断要不要继续爬下一页

和同类工具比,比如 BeautifulSoup(只解析 HTML,不智能),或 Firecrawl(商业服务,要付费),Crawl4AI 完全开源免费,而且专门针对 AI 场景做了优化,不是通用爬虫加了个 Markdown 输出那么简单。


怎么用?(复制即用)

第一步:安装

pip install crawl4aicrawl4ai-setup   # 安装浏览器依赖,必须运行这步

如果安装后想确认环境没问题:

crawl4ai-doctor

它会检查 Python 版本、Playwright 是否正常,碰到问题会给出修复建议。


第二步:最简单的使用——爬一个页面

import asynciofrom crawl4ai import AsyncWebCrawlerasync def main():    async with AsyncWebCrawler() as crawler:        result = await crawler.arun("https://example.com")        print(result.markdown[:500])  # 打印前500字符asyncio.run(main())

运行之后,你会看到一段干净的 Markdown 文本,没有 HTML 标签,没有广告,只有正文内容。


第三步:喂给 AI 分析

有了 Markdown,直接拼进 prompt 就行:

import asynciofrom crawl4ai import AsyncWebCrawlerfrom openai import OpenAI  # 或者换成 anthropicasync def analyze_page(url: str, question: str):    # 抓页面    async with AsyncWebCrawler() as crawler:        result = await crawler.arun(url)    # 构造 prompt    content = result.markdown[:8000]  # 控制 token 数    prompt = f"""以下是网页内容:{content}问题:{question}"""    # 调 AI    client = OpenAI()    response = client.chat.completions.create(        model="gpt-4o-mini",        messages=[{"role": "user", "content": prompt}]    )    return response.choices[0].message.content# 使用result = asyncio.run(analyze_page(    "https://techcrunch.com/2026/06/01/some-article",    "这篇文章的核心观点是什么?对我们有什么影响?"))print(result)

第四步:批量爬多个 URL(并发)

import asynciofrom crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheModeasync def batch_crawl(urls: list):    run_cfg = CrawlerRunConfig(cache_mode=CacheMode.BYPASS, stream=True)    async with AsyncWebCrawler() as crawler:        async for result in await crawler.arun_many(urls, config=run_cfg):            if result.success:                print(f"✅ {result.url} - {len(result.markdown)} chars")            else:                print(f"❌ {result.url} - {result.error_message}")urls = [    "https://news.ycombinator.com",    "https://arxiv.org/abs/2301.00001",    "https://docs.python.org/3/",]asyncio.run(batch_crawl(urls))

进阶:用 CSS 提取结构化数据

不想要 Markdown,想要结构化 JSON?比如爬商品列表:

import asyncio, jsonfrom crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode, JsonCssExtractionStrategyschema = {    "name": "商品列表",    "baseSelector": "div.product-item",  # 每个商品的容器    "fields": [        {"name": "title", "selector": "h2.product-title", "type": "text"},        {"name": "price", "selector": "span.price", "type": "text"},        {"name": "link", "selector": "a", "type": "attribute", "attribute": "href"}    ]}async def extract_products(url: str):    cfg = CrawlerRunConfig(        cache_mode=CacheMode.BYPASS,        extraction_strategy=JsonCssExtractionStrategy(schema)    )    async with AsyncWebCrawler() as crawler:        result = await crawler.arun(url, config=cfg)        products = json.loads(result.extracted_content)        return products# products = asyncio.run(extract_products("https://shop.example.com/list"))

注意事项

  1. 1. 第一次运行慢:因为要启动 Chromium,冷启动需要几秒,正常的
  2. 2. 有些网站会反爬:可以加 BrowserConfig(headless=False) 用有头模式,或者加代理
  3. 3. token 消耗:如果你用 LLM 提取策略,每次爬都会消耗 token,大规模爬先用 CSS 提取
  4. 4. 异步是必须的:整个库基于 asyncio,不能在同步代码里直接调用,要用 asyncio.run()

为什么值得关注?

现在很多人在搭 RAG 知识库,或者给 AI Agent 配一个"能读网页"的工具,Crawl4AI 是目前这个场景下最省力的方案之一。

它不只是一个爬虫,更像是 AI 和互联网之间的翻译器——把乱糟糟的网页翻译成 AI 能顺畅阅读的文本。

随着 AI Agent 越来越普及,"给 AI 提供实时网络信息"这个需求会越来越刚,Crawl4AI 这个方向的工具会变得越来越重要。项目还在活跃维护,最近刚加了自适应爬取(AdaptiveCrawler)功能,让爬虫能像人一样判断"够了,不用再爬了"。

如果你在做:

  • • 私有知识库搭建
  • • AI 新闻摘要机器人
  • • 竞品监控自动化
  • • 给 AI Agent 配实时信息源

Crawl4AI 应该是第一个试的工具。


结尾

一句话总结:Crawl4AI 把"从网页到 AI 可用数据"这条路,从一天的工作量变成了十行代码。

建议你先用它爬几个自己常看的博客或文档站,感受一下清洗后的 Markdown 质量,再决定要不要接入你的项目。

项目地址:https://github.com/unclecode/crawl4ai

引用链接

[1] @unclecode: https://github.com/unclecode