尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Crawl4AI 网页爬虫指南:5 分钟把任意网页变成 AI 可读的 Markdown

Crawl4AI 网页爬虫指南:5 分钟把任意网页变成 AI 可读的 Markdown Crawl4AI 网页爬虫指南5 分钟把任意网页变成 AI 可读的 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你有一个想法把一批网页内容整理干净直接喂给大模型做问答或入库。手工清洗 HTML 太慢写解析器太脆。Crawl4AI 是一个开源网页爬虫专门输出 AI 友好的 Markdown 和结构化数据。这篇文章按先判断、再跑通、后避坑的顺序写读完你能决定它适不适合你并知道最常见的 3 个坑在哪。先判断它适不适合你这一节给你 3 条自查标准每条给一个明确的用或不用结论。运行环境你能安装 Python 3.9并接受pip install之后还要装一个无头浏览器Chromium约几百 MB。能 → 适合不能比如只有纯沙箱→ 不适合。任务类型你要抓的是 JS 渲染的动态页面、需要登录态、点击加载、截图或 PDF或是给 RAG/Agent 准备干净文本 → 适合。只是抓纯静态 HTML 的标题和链接 → 用 requests 解析库就够了。数据规模单次几百个页面以内、以内容质量为先 → 适合。百万级 URL、追求吞吐和去重调度的采集工程 → 它不是首选见文末下一步。第一次跑通最短路径这一节带你跑通最小示例并说清跑起来之后你看到什么。安装共 3 条命令setup 会自动装浏览器依赖pip install -U crawl4ai crawl4ai-setup crawl4ai-doctor # 环境体检报错时看它的修复建议然后保存下面这段并运行完整可运行版本见 docs/examples/quickstart.pyimport asyncio from crawl4ai import AsyncWebCrawler async def main(): async with AsyncWebCrawler() as crawler: # 启动一个无头浏览器 result await crawler.arun(https://example.com) print(result.success) # 是否抓取成功 print(result.markdown[:500]) # 页面转成的 Markdown先看前 500 字 asyncio.run(main())跑起来之后你会看到两样东西True抓取成功和一段干净的 Markdown——标题、段落、列表都带结构导航栏和脚本代码已被剥离。CrawlResult还有links内外部链接、media图片等字段可以按需取用。首次运行稍慢因为要拉起浏览器后续同进程内复用会快很多。三个典型场景每个场景按场景目标做法产出展开只讲思路和关键参数。场景一给 LLM 准备干净的页面文本场景做 RAG 或问答网页里广告和导航占了一半篇幅。目标只保留正文去掉噪音。做法给CrawlerRunConfig传markdown_generatorDefaultMarkdownGenerator(content_filterPruningContentFilter(threshold0.4))。产出对比result.markdown.raw_markdown和fit_markdown的长度正文通常能压缩一半以上。场景二只抓列表页的固定区域场景电商列表、新闻列表结构稳定。目标拿指定区域不碰整页。做法给CrawlerRunConfig传css_selector.article要更结构化的字段换JsonCssExtractionStrategy(schema)schema 里写 baseSelector 和字段选择器见 docs/examples/llm_extraction_openai_pricing.py。产出Markdown 只含该区域或一段 JSON 数组每个元素一条数据。场景三让 LLM 按你的字段表提取数据场景页面结构不规整CSS 选择器写不动但数据语义明确价格、名称。目标零选择器拿到结构化 JSON。做法定义一个 Pydantic 模型当 schema配合 LLM 提取策略和一句 instruction最小示例如下from pydantic import BaseModel class Product(BaseModel): # 定义你要的字段LLM 按它输出 name: str price: str config CrawlerRunConfig( extraction_strategyLLMExtractionStrategy( llm_configLLMConfig(provideropenai/gpt-4o-mini, api_tokensk-你的密钥), schemaProduct.model_json_schema(), extraction_typeschema, instruction提取页面中所有产品的名称和价格)) # 运行方式同前文result await crawler.arun(url, configconfig) # 结构化结果在 result.extracted_content是一个 JSON 字符串产出JSON 字符串解析后即可入库。注意它按页面调用 LLM成本和延迟都进来了适合质量优先的页面。一张表看懂能力边界这一节用一张表说明什么功能、什么时候用。功能一句话说明什么时候用Markdown 转换HTML 自动转成干净 Markdown默认开启喂给 LLM 前先过一遍内容过滤Pruning/BM25 等策略裁掉导航、广告正文占比低、噪音多的页面CSS 选择器只取指定区域结构稳定的列表页JSON CSS 提取按 schema 产出 JSON不调 LLM字段固定、量大、想省钱LLM 提取按 Pydantic 模型让 LLM 抽数据结构乱但语义清晰的页面深度爬取BFS/DFS 从种子页向外扩整站或栏目级采集反检测magic 模式、随机 UA、指纹伪装被拦截或返回验证页时代理配置单代理或轮换策略大规模抓取需要分散出口缓存按 URL 缓存结果默认 BYPASS重复抓取同一批页面时会话复用用 session_id 保持登录态登录后的多页抓取深度爬取长这样BFSDeepCrawlStrategy(max_depth2, max_pages10, filter_chainFilterChain([DomainFilter(allowed_domains[example.com])]))传入CrawlerRunConfig(deep_crawl_strategy...)即可用法见 crawl4ai/deep_crawling/。上生产前的 3 个高频坑Q1装完包一跑就报浏览器相关错误解法按顺序执行下面两条再跑crawl4ai-doctor确认python -m playwright install chromium crawl4ai-doctorQ2明明有内容抓回来却是空白或验证页解法大概率触发了反爬。给CrawlerRunConfig加magicTrue自动启用伪装手段再配合BrowserConfig(user_agent_moderandom)随机 User-Agent仍被拦就配代理。Q3内容不全像是没等加载完解法CrawlerRunConfig里加delay_before_return_html3秒等渲染需要点击加载时用js_code传一段点击脚本配合session_id复用同一个浏览器会话翻页。部署与规模化只讲 3 个关键点每点一行命令或参数。容器化官方 Docker 镜像带完整 API 服务一条命令起docker run -d -p 11235:11235 --shm-size1g unclecode/crawl4ai:latest起来后访问http://localhost:11235/playground就能在线测试。并行arun_many(urls[...])一次传多个 URL 并行抓取比逐个 arun 快。失败重试给CrawlerRunConfig设page_timeout毫秒兜底超时配合cache_mode控制重试时是否复用旧结果。下一步选型建议页面 JS 重度依赖、要给 AI 准备数据、量在几百页以内Crawl4AI 是合适的但如果你只需要抓纯静态页面的少量字段requests 解析库更轻要做百万级 URL 的采集调度建议选专用采集框架Crawl4AI 单进程浏览器模型撑不起那个规模。3 个真实入口按顺序看安装与环境docs/md_v2/core/installation.md快速上手docs/md_v2/core/quickstart.md可运行示例集合docs/examples/行动建议今天就按第一次跑通那一节跑一遍拿到result.markdown后先做一件事——把它和原网页并排看 1 分钟你会发现它砍掉了什么、留下了什么这比读十页文档都管用。【免费下载链接】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),仅供参考
返回列表