ARTICLE DETAIL

资讯详情

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

Crawl4AI 完整教程:5分钟把网页变成大模型能直接用的数据

Crawl4AI 完整教程:5分钟把网页变成大模型能直接用的数据 Crawl4AI 完整教程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 是一个开源的、面向大模型的网页爬虫与抓取工具它用无头浏览器渲染页面自动把 HTML 转换成干净的 Markdown并提供 CSS 选择器提取和 LLM 结构化提取两条数据出口。它面向做 RAG、AI Agent 和数据管道的开发者解决动态页面抓不全、HTML 清洗费时、结构化字段难提取这三类问题。装好并验证只需一条命令pip install -U crawl4ai crawl4ai-setup crawl4ai-doctor三条命令串起来安装库、安装 Playwright 浏览器内核、体检环境。crawl4ai-doctor会检查浏览器、系统依赖是否就绪有缺项会直接给出修复建议装完先跑它比装出问题再排查省事得多。跑通第一次抓取import asyncio from crawl4ai import AsyncWebCrawler async def main(): # 默认启动无头 Chromium自动渲染并生成 Markdown async with AsyncWebCrawler() as crawler: result await crawler.arun(https://example.com) print(result.markdown[:300]) # 打印转换后的前300字符 asyncio.run(main())所有行为由两个配置对象控制BrowserConfig管浏览器内核、代理、指纹CrawlerRunConfig管单次抓取缓存、提取策略、超时、注入的 JS。下面四个场景都围绕这两个对象展开。场景一单页抓取顺手清掉噪音新闻、博客类页面里导航和侧栏占了大量篇幅。给配置挂上PruningContentFilter它会按文本密度剪枝输出一份更适合喂给 LLM 的精简 Markdownfrom crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode from crawl4ai.content_filter_strategy import PruningContentFilter from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator config CrawlerRunConfig( cache_modeCacheMode.BYPASS, excluded_tags[nav, footer, aside], # 先按标签剔除 markdown_generatorDefaultMarkdownGenerator( content_filterPruningContentFilter( threshold0.48, threshold_typefixed # 文本密度过滤阈值 ) ), ) async with AsyncWebCrawler() as crawler: result await crawler.arun(https://en.wikipedia.org/wiki/Apple, configconfig) print(result.markdown.fit_markdown) # 剪枝后的正文注意result.markdown里有两个版本raw_markdown是原始转换结果fit_markdown是过完内容过滤器后的结果。过滤器大约增加 50ms 处理时间重复抓取时可以改cache_modeCacheMode.ENABLED走缓存省时间。场景二用 CSS 选择器只取目标区域整页都拿回来再清洗不如一开始就只取需要的部分。css_selector参数让 Markdown 生成只作用于选中区域config CrawlerRunConfig( cache_modeCacheMode.BYPASS, css_selector.article-content # 只提取该选择器匹配的内容 ) async with AsyncWebCrawler() as crawler: result await crawler.arun(https://techcrunch.com, configconfig) print(result.markdown[:1000])如果目标是结构化 JSON而不是一段文本可以用JsonCssExtractionStrategy定义一个 schema基础选择器 字段级选择器result.extracted_content直接返回 JSON 数组不需要 LLM 参与速度快且结果稳定。适合商品列表、文章列表这类重复结构的页面。场景三让 LLM 自动输出结构化字段页面结构不规律、或者字段本身需要理解比如从描述里判断价格时换 LLM 提取用 Pydantic 模型描述想要什么把 schema 交给LLMExtractionStrategy。import os from pydantic import BaseModel, Field from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, LLMConfig, CacheMode from crawl4ai.extraction_strategy import LLMExtractionStrategy class Product(BaseModel): name: str Field(..., description产品名称) price: str Field(..., description产品价格) config CrawlerRunConfig( cache_modeCacheMode.BYPASS, extraction_strategyLLMExtractionStrategy( llm_configLLMConfig(provideropenai/gpt-4o-mini, api_tokenos.getenv(OPENAI_API_KEY)), schemaProduct.model_json_schema(), # 由 Pydantic 模型生成 instruction从页面中提取所有产品信息, ), ) async with AsyncWebCrawler() as crawler: result await crawler.arun(https://www.amazon.com/s?klaptop, configconfig) print(result.extracted_content) # 结构化 JSONprovider支持 OpenAI、Anthropic、DeepSeek、Ollama 等多种接入方式本地模型和云端模型可以在同一套代码里切换。场景四跑成一个常驻服务个人脚本之外更常见的生产形态是把 Crawl4AI 装进 Docker对外暴露 REST API配一个浏览器池管理并发docker pull unclecode/crawl4ai:latest docker run -d -p 11235:11235 --shm-size1g --name crawl4ai unclecode/crawl4ai:latest容器起来后http://localhost:11235提供服务/crawl抓取单页、/crawl/stream流式抓取另有截图、PDF 导出、LLM 提取等端点浏览器访问/dashboard是监控面板/playground是交互式调试台。多容器横向扩展时可以结合 deploy/docker/ 目录下的config.yml配置 JWT 认证和浏览器池参数。值得知道的几个关键配置反检测BrowserConfig(use_undetected_browserTrue)启用反指纹内核user_agent_moderandom随机 User-Agent配合代理字典proxy_config{server: ..., username: ..., password: ...}做轮换应对拦截类站点。深度爬取BFSDeepCrawlStrategy/DFSDeepCrawlStrategy从入口页按层或按路径展开用max_depth、max_pages、same_domain控制边界源码见 crawl4ai/deep_crawling/。批量抓取arun_many(urls)一次提交多个 URL内部自动并发和限流比手写任务循环更省心。动态内容js_code注入点击/滚动脚本wait_for等待条件成立再取页面session_id可以在多次抓取间保持登录态。常见坑现象、原因与解法现象安装后第一次运行报浏览器相关错误。原因pip install只装 Python 包系统级浏览器依赖和 Chromium 需要单独安装。 解法重跑crawl4ai-doctor或直接python -m playwright install --with-deps chromium补齐依赖。现象抓回来的 Markdown 明显缺内容只有首屏。原因内容是 JS 延迟加载的页面还没加载完就取了 HTML。 解法用js_code执行点击/滚动配合wait_for或delay_before_return_html等待内容出现后再返回。现象目标站点频繁返回验证页或拒绝连接。原因浏览器指纹暴露headless 特征、固定 UA、IP 复用。 解法开use_undetected_browser叠加随机 UA 和代理轮换仍被拦则考虑降低频率。现象批量抓取时内存飙高。原因无头浏览器按并发数各占一份内存。 解法控制arun_many的并发规模CacheMode.ENABLED让重复 URL 走缓存调试完关掉不必要的截图和媒体提取。接下来可以做什么完整入门教程含动态页面示例docs/md_v2/core/quickstart.mdLLM 提取的完整示例docs/examples/llm_extraction_openai_pricing.py提取策略源码crawl4ai/extraction_strategy.pyDocker 部署与 API 说明deploy/docker/README.md最实际的第一步把上面场景一的代码改成你要抓的那个页面看看fit_markdown的输出质量再决定要不要上 CSS 提取或 LLM 提取。本文基于 v0.9.0 版本编写功能变动详见 CHANGELOG.md。【免费下载链接】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),仅供参考
返回列表