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

资讯详情

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

Crawl4AI 异步爬虫:5 分钟跑通 3 个真实场景

Crawl4AI 异步爬虫:5 分钟跑通 3 个真实场景 Crawl4AI 异步爬虫5 分钟跑通 3 个真实场景【免费下载链接】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给 RAG 喂数据时动态页面是第一道坎JS 懒加载的列表、「加载更多」、Cookie 横幅都会让普通请求只抓到首屏。Crawl4AI 是一个面向 LLM 的异步爬虫本文带你把 3 个真实场景跑通。 项目速览维度说明定位开源 LLM 友好网页爬虫把网页转成干净的结构化 Markdown适用人群做 RAG、数据管道、AI Agent 的 Python 开发者核心亮点异步浏览器池、JS 动态执行、结构化抽取、会话与钩子机制上手难度低装完包后 3 行代码即可发起第一次爬取Markdown 双输出raw_markdown保留全文fit_markdown自动剪掉导航、页脚等噪声⚡全异步设计arun()单页、arun_many()多页并发默认按内存自适应调度抽取策略丰富CSS/XPath 零成本抽取、LLM 模式抽取、余弦相似度语义抽取不必手写正则 5 分钟跑通 Crawl4AI 异步爬虫这段代码先安装并初始化浏览器依赖再爬取一个真实新闻页把清洗后的 Markdown 打印出来。pip install -U crawl4ai crawl4ai-setup # 安装 Chromium 及系统依赖import asyncio from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode async def main(): async with AsyncWebCrawler() as crawler: result await crawler.arun( urlhttps://www.nbcnews.com/business, configCrawlerRunConfig(cache_modeCacheMode.BYPASS), ) if result.success: print(result.markdown.fit_markdown[:500]) if __name__ __main__: asyncio.run(main())运行后你会看到页面正文以 Markdown 输出标题、列表、表格结构都保留了下来BYPASS关掉了缓存重复运行也能拿到最新内容。result对象里除了markdown还有html、cleaned_html、links、media、screenshot等字段一次爬取全部拿到。⚡ 拆解 Crawl4AI 异步爬取的三个核心能力让动态内容完整加载很多列表只渲染首屏其余内容要点击「加载更多」才出现。任务就是注入一段 JS 点按钮再等选择器出现后才抓 HTML。# ... 省略 importcrawler 已启动 js const btn Array.from(document.querySelectorAll(button)) .find(b b.textContent.includes(Load More)); btn btn.click(); config CrawlerRunConfig( cache_modeCacheMode.BYPASS, js_codejs, # 注入并执行 JS wait_forarticle h2, # 等文章出现后再抓 HTML wait_for_timeout10000, ) result await crawler.arun(urlhttps://www.nbcnews.com/business, configconfig)效果result.markdown里包含点击后加载出的条目而不是只有首屏页面慢时把wait_for_timeout调大或把等待条件换成 JS 函数判断。用 CSS 模式拿结构化 JSON任务卡片式重复内容课程、商品、职位不想走 LLM 花钱就用baseSelector指到卡片容器、fields描述字段的纯 CSS 抽取。# ... 省略 importcrawler 已启动 schema { name: course, baseSelector: section.charge-methodology .w-dyn-item, fields: [ {name: title, selector: h3, type: text}, {name: desc, selector: .course-content-text, type: text}, ], } config CrawlerRunConfig( cache_modeCacheMode.BYPASS, extraction_strategyJsonCssExtractionStrategy(schema), ) result await crawler.arun(urlhttps://www.kidocode.com/degrees/technology, configconfig)效果result.extracted_content是一个 JSON 数组每张卡片一条记录直接json.loads就能入库页面结构稳定时这条路比 LLM 快一个数量级。剪掉页面噪声直接喂给 LLM任务整页 Markdown 混着导航、页脚、广告token 费钱还稀释检索效果。用PruningContentFilter给每个内容块打分只保留核心段落。# ... 省略 importcrawler 已启动 config CrawlerRunConfig( cache_modeCacheMode.BYPASS, excluded_tags[nav, footer, aside], remove_overlay_elementsTrue, # 移除弹窗广告 markdown_generatorDefaultMarkdownGenerator( content_filterPruningContentFilter(threshold0.48), options{ignore_links: True}, ), ) result await crawler.arun(urlhttps://en.wikipedia.org/wiki/Apple, configconfig) print(len(result.markdown.raw_markdown), len(result.markdown.fit_markdown))效果fit_markdown的长度通常是原文的几分之一留下的几乎全是正文给 RAG 入库时建议固定用剪枝后的版本。实战三个真实业务场景批量喂给 RAG输入一批文档 URL输出每个页面的fit_markdown。用arun_many(urls, config)一次发出默认调度器按内存自适应并发mean_delay控制请求间隔。相比串行arun()吞吐上一个量级且内存不会被打爆。采集结构化商品数据输入商品列表页输出含名称、价格、图片 URL 的 JSON。结构清晰时用JsonCssExtractionStrategy字段散落、DOM 混乱时换LLMExtractionStrategy配模式定义让模型按 schema 抽。两种策略挂同一个arun()互不冲突。深爬一个文档站输入文档站入口 URL输出同域名下的全部页面。给arun()传deep_crawl_strategyBFSDeepCrawlStrategy(max_depth2)再配URLPatternFilter过滤静态资源即可。v0.8 起还有prefetchTrue快速发现模式URL 发现速度快 5-10 倍。 避坑清单第二次运行拿到旧内容cache_mode默认开启缓存同 URL 会直接返回上次结果开发期显式传CacheMode.BYPASS生产可开check_cache_freshness用 ETag 校验新鲜度。装完起不来浏览器Chromium 没下载全跑一遍crawl4ai-setup或手动python -m playwright install --with-deps chromium。动态内容只抓到首屏js_code执行完立刻抓 HTML异步数据还没回来必须配合wait_for加wait_for_timeout等真实选择器。被反爬拦截result.successFalse且error_message提示 anti-bot配proxy_rotation_strategy代理轮换或更换 user_agent 后重试。多步操作丢状态每次arun()默认新开页面登录、翻页流程给 config 加session_idxxx复用同一个页面保持 Cookie 和 JS 状态。arun_many 内存被打爆并发标签页开太多会 OOM换SemaphoreDispatcher固定并发上限或保留默认的内存自适应调度并设mean_delay垫速。 规划延伸路线深爬与断点续爬docs/md_v2/core/deep-crawling.mdresume_state支持长任务中断后恢复LLM 结构化抽取进阶docs/md_v2/extraction/llm-strategies.md覆盖各家模型接入Docker API 部署deploy/docker/把爬虫变成 REST 服务v0.9 起默认开启鉴权C4A 脚本语言docs/md_v2/core/c4a-script.md用.c4a文件声明式表达多步流程自适应爬虫crawl4ai/adaptive_crawler.py学习站点结构只爬相关内容单页爬取跑稳之后下一步就是把抽取策略、并发调度和缓存组合成一条稳定的数据管道让网页真正变成模型能直接吃的输入。【免费下载链接】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),仅供参考
返回列表