ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Crawl4AI 完整上手指南:让 LLM 数据抓取只需 5 行代码

Crawl4AI 完整上手指南:让 LLM 数据抓取只需 5 行代码 Crawl4AI 完整上手指南让 LLM 数据抓取只需 5 行代码【免费下载链接】crawl4ai Crawl4AI: Open-source LLM Friendly Web Crawler Scraper. Dont be shy, join here: https://discord.gg/jP8KfhDhyN项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4aiCrawl4AI 是一款开源的、为大模型LLM设计友好的网页爬虫与数据抓取库。它把打开网页、等 JavaScript 渲染完成、提取内容、转成干净 Markdown 或 JSON这条链路封装进一个异步 API你只需传入 URL 就能拿到可直接喂给 RAG 或知识库的结构化文本。适合正在搭 AI 应用、需要批量获取网页数据的开发者。先跑起来第一次抓取先安装并初始化pip install crawl4ai crawl4ai-setup # 安装 Playwright 浏览器依赖 crawl4ai-doctor # 环境自检下面是一段最小可运行示例import asyncio from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode async def run(): async with AsyncWebCrawler() as crawler: cfg CrawlerRunConfig(cache_modeCacheMode.BYPASS) result await crawler.arun(https://example.com, configcfg) print(result.success) # 是否成功 print(result.markdown.raw_markdown[:200]) asyncio.run(run())运行后会在终端打印页面标题、正文和链接组成的 Markdown而不是原始 HTML。CacheMode.BYPASS表示这次不读写本地缓存总是拿最新页面。能力地图按流程环节看 Crawl4AI1. 单页抓取arun() 与浏览器控制AsyncWebCrawler.arun(url)是入口方法默认用 Playwright 启动无头 Chromium执行页面里的 JavaScript 后再取 DOM所以依赖前端渲染的内容也能拿到。两个配置对象分工明确BrowserConfig管浏览器本身。headless控制是否显示窗口java_script_enabled控制是否执行 JS需要登录态时可用user_data_dir复用本地浏览器 profile。CrawlerRunConfig管单次抓取。js_code可注入一段脚本比如点击加载更多按钮wait_for指定等待某个选择器出现page_timeout控制超时。返回的是CrawlResult对象success标记成败markdown是转换后的文本links收集页内链接metadata里含标题、状态码等信息。失败时error_message会给出原因。2. 内容提取从选择器到 LLM 结构化拿到页面后有三种提取方式按成本从低到高选方式核心组件适合场景成本CSS / XPath 选择器JsonCssExtractionStrategy等结构固定列表、商品卡片无模型费用LLM 提取LLMExtractionStrategy结构不规整、字段难写死调用模型内容过滤PruningContentFilter等只保留正文、去掉导航广告几十毫秒选择器方式不需要模型用一个描述字段和选择器的 schema输出标准 JSON。schema 还能用 LLM 一次性生成JsonCssExtractionStrategy.generate_schema之后反复提取都免费。LLM 方式则是定义 Pydantic 模型给出字段描述配合LLMConfig(provideropenai/gpt-4o, api_token...)也支持ollama/开头的本地模型。from crawl4ai import AsyncWebCrawler from crawl4ai.content_scraping_strategy import CssContentScrapingStrategy cfg CrawlerRunConfig( scraping_strategyCssContentScrapingStrategy(css_selectorarticle) ) async with AsyncWebCrawler() as crawler: r await crawler.arun(https://example.com/blog/post, configcfg) print(r.markdown.fit_markdown[:200]) # 只含 article 内的内容3. 清洗与结构化raw_markdown 与 fit_markdownCrawlResult.markdown里有两份文本raw_markdown是 HTML 到 Markdown 的直接转换fit_markdown则是经过内容过滤器处理后的版本更适合直接进 LLM。DefaultMarkdownGenerator可搭配PruningContentFilter基于剪枝阈值、BM25ContentFilter按与查询词的词频相关性或LLMContentFilter来去掉导航、广告等噪音。4. 批量与深度爬取批量用arun_many(urls, config)默认由MemoryAdaptiveDispatcher根据系统内存自动调节并发也可以换成SemaphoreDispatcher固定并发数或配合RateLimiter控制节奏。深度爬取在CrawlerRunConfig里挂一个策略即可。BFSDeepCrawlStrategy按链接层级向外扩展max_depth控制层数include_external决定是否离开当前域名max_pages限制总页数还能挂filter_chain过滤 URL、挂url_scorer给链接打分。另有DFSDeepCrawlStrategy和BestFirstCrawlingStrategy按分数优先访问可选。from crawl4ai import AsyncWebCrawler, CrawlerRunConfig from crawl4ai.deep_crawling import BFSDeepCrawlStrategy cfg CrawlerRunConfig( deep_crawl_strategyBFSDeepCrawlStrategy( max_depth2, max_pages30, include_externalFalse ) ) async with AsyncWebCrawler() as crawler: results await crawler.arun_many( [https://example.com/docs], configcfg ) print([r.url for r in results if r.success])这段代码从起始页出发沿站内链接向下爬两层、最多 30 个页面每个页面的结果都带metadata中的深度信息方便你按层做后续处理。原理速览渲染、转换、提取三步分工Crawl4AI 的管线可以拆成三段。第一段是渲染AsyncWebCrawler基于 Playwright 管理 Chromium页面加载、JS 执行、按需注入脚本、等待目标元素出现都在这一层完成这一步决定了你能不能看到前端渲染后的真实 DOM。第二段是转换DefaultMarkdownGenerator把渲染后的 HTML 转成 Markdown保留标题层级、链接、图片、表格结构——这一步的输出本身就是 LLM 友好的格式多数场景到这里就够了。第三段是提取如果你需要固定字段的 JSON就在转换之上叠加选择器策略或LLMExtractionStrategyLLM 提取会把 Markdown 文本和 schema 一起交给模型返回按你 Pydantic 模型结构化的结果。简单说前两段保证拿得到第三段保证取得准。三者解耦意味着你可以只换其中一环——比如渲染没问题但正文噪音大就只加内容过滤器不用动浏览器配置。进阶与调优并发、缓存与代理固定并发arun_many传入SemaphoreDispatcher(semaphore_count5)把并发锁死在 5 路避免大批量任务把内存和对方服务器都打满。⏱随机延迟CrawlerRunConfig的mean_delay和max_range会在批量抓取时在请求间插入随机等待让请求节奏更接近人工。缓存CacheMode有ENABLED / DISABLED / READ_ONLY / WRITE_ONLY / BYASS五档注意最后一个实际拼写是BYPASS。重复爬同一批页面时启用ENABLED命中的 URL 不再起浏览器速度差异明显。代理proxy_configProxyConfig(serverhttp://proxy.example.com:8080, username..., password...)接入代理需要轮换时搭配RoundRobinProxyStrategy多代理轮询。调试本地开发时把BrowserConfig(headlessFalse)打开能直接看到页面加载和脚本注入的过程排错比只看日志快得多。学习路径快速入门与完整示例docs/md_v2/core/quickstart.mdarun全参数参考docs/md_v2/api/arun.md深度爬取专题过滤器、打分器、崩溃恢复docs/md_v2/core/deep-crawling.md批量并发与调度器docs/md_v2/advanced/multi-url-crawling.md代理与反爬docs/md_v2/advanced/proxy-security.md可运行示例目录docs/examples/里面有hello_world.py、deepcrawl_example.py等社区项目 README 中的 Discord 频道问题排查和交流都在这git clone https://gitcode.com/GitHub_Trending/craw/crawl4ai cd crawl4ai pip install -e .[dev]克隆源码后可以跑tests/下的用例熟悉各模块行为也可以直接在docs/examples/里挑一个场景改着玩。先从一个arun开始把真实业务页面的 URL 换进去跑一遍——你会发现多数问题等待、选择器、噪音在第二个页面就会暴露出来趁早调好这些参数后面的批量和深度爬取基本不用返工。【免费下载链接】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),仅供参考
返回列表