零代码搞定LLM结构化提取:Crawl4AI+Pydantic实战指南

【免费下载链接】crawl4ai 🔥🕷️ Crawl4AI: Open-source LLM Friendly Web Crawler & Scrapper 【免费下载链接】crawl4ai 项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai

你还在为LLM提取非结构化数据烦恼?当需要从网页中精准提取如产品价格、新闻时间、股票数据等结构化信息时,传统爬虫往往需要编写大量解析代码,而普通LLM调用又面临格式混乱的问题。本文将展示如何用Crawl4AI结合Pydantic模型,仅需3步即可实现从网页爬取到结构化数据输出的全流程自动化,代码量减少80%。

读完本文你将掌握:

  • Pydantic模型定义与Crawl4AI集成方法
  • 3种结构化提取策略(Schema约束/自由提取/智能推断)
  • 反爬场景下的鲁棒性配置
  • 完整项目案例:OpenAI价格表实时提取系统

技术原理:数据流转架构

Crawl4AI的LLM提取能力基于"爬虫-解析-结构化"三层架构实现:

mermaid

核心实现位于extraction_strategy.py,其中LLMExtractionStrategy类封装了完整的LLM交互逻辑,支持通过schema参数接收Pydantic模型定义,实现类型安全的数据提取。

实战步骤:从模型定义到数据落地

1. 定义Pydantic数据模型

创建结构化数据模板,以OpenAI价格表提取为例:

from pydantic import BaseModel, Field

class OpenAIModelFee(BaseModel):
    model_name: str = Field(..., description="模型名称,如GPT-4o")
    input_fee: str = Field(..., description="输入token单价,如$0.005/1K Tokens")
    output_fee: str = Field(..., description="输出token单价")

完整示例代码见llm_extraction_openai_pricing.py,该模型定义确保提取结果自动包含模型名称和双向价格信息。

2. 配置Crawl4AI提取策略

初始化带有LLM提取配置的爬虫实例,关键参数说明:

crawler_config = CrawlerRunConfig(
    cache_mode=CacheMode.BYPASS,  # 禁用缓存确保实时性
    extraction_strategy=LLMExtractionStrategy(
        llm_config=LLMConfig(provider="openai/gpt-4o", api_token=os.getenv("OPENAI_API_KEY")),
        schema=OpenAIModelFee.model_json_schema(),  # 注入Pydantic模型
        instruction="提取所有模型名称及其输入输出token费用,不要遗漏任何模型",
        extra_args={"temperature": 0},  # 零温度确保结果一致性
    ),
)

3. 执行爬取与数据提取

启动异步爬虫任务,获取结构化结果:

async with AsyncWebCrawler(config=browser_config) as crawler:
    result = await crawler.arun(
        url="https://openai.com/api/pricing/", 
        config=crawler_config
    )
    print(result.extracted_content)  # 直接输出Pydantic模型实例列表

执行后将获得如下结构化数据:

[
  {"model_name": "GPT-4o", "input_fee": "$0.005 / 1K Tokens", "output_fee": "$0.015 / 1K Tokens"},
  {"model_name": "GPT-4o mini", "input_fee": "$0.00015 / 1K Tokens", "output_fee": "$0.0006 / 1K Tokens"}
]

高级配置:应对复杂场景

反爬策略配置

对于有反爬机制的网站,需配置浏览器指纹和代理:

browser_config = BrowserConfig(
    headless=True,
    stealth_mode=True,  # 启用反检测模式
    proxy="http://username:password@proxy-server:port"  # 代理支持
)

三种提取模式对比

模式 适用场景 代码示例路径
Schema约束 固定格式数据 llm_extraction_openai_pricing.py
自由提取 非固定结构内容 summarize_page.py
智能推断 未知数据结构 llm_table_extraction_example.py

项目资源与扩展阅读

该方案已集成到Crawl4AI v0.7.4版本,通过pip install crawl4ai>=0.7.4即可获取最新功能。建议配合Docker部署指南实现生产环境快速搭建。

点赞收藏本文,关注项目ROADMAP.md获取即将发布的多模态提取功能更新预告。

【免费下载链接】crawl4ai 🔥🕷️ Crawl4AI: Open-source LLM Friendly Web Crawler & Scrapper 【免费下载链接】crawl4ai 项目地址: https://gitcode.com/GitHub_Trending/craw/crawl4ai

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐