适用于 AI 的终极网页抓取工具:Crawl4AI

更新时间:2024/11/27, 00:03

在当今的数据驱动世界中,网页数据的抓取提取是构建高级 AI 工具的基本技术。无论您是在建立聊天机器人、基于检索增强生成(RAG)系统的应用程序,还是仅仅收集数据进行分析,能够访问实时和相关的信息都是至关重要的。在这篇文章中,我们将探索 Crawl4AI,一个开源、友好的网页抓取器,它能轻松地从网站提取数据。

如果您正在寻找简单易懂、适合初学者的指南,本文章将引导您了解设置、关键功能以及如何有效利用 Crawl4AI 为您的 AI 项目服务。

什么是 Crawl4AI?

Crawl4AI 是一个在 GitHub 上提供的开源网页抓取器,旨在简化从网站提取数据的过程。它特别适用于构建以下应用:

  • 由大语言模型(LLM)驱动的聊天机器人

  • 从网络获取实时数据的基于 RAG 的系统

  • AI 代理函数调用

  • 自动内容聚合器信息发现工具

与传统抓取器不同,Crawl4AI 提供基于 markdown 的输出,这确保了提取的数据兼容大语言模型,并易于与像 OpenAI 的 GPT 或 Meta 的 Llama 这样的模型集成。

为什么要使用 Crawl4AI?

  1. 易于使用: 只需几行代码即可开始。

  2. Markdown 输出: 提取的内容以 markdown 格式返回,方便**大语言模型(LLM)**理解。

  3. 与 LLM 集成: 您可以将 Crawl4AI 与 OpenAI 或其他 LLM 提供商结合使用,以在提取时结构化数据。

  4. 多种选择: 可直接从 GitHub 安装,或使用 Docker 设置用于更大规模的应用。

  5. 自动化友好: 可用于计划的 cron 作业以定期从网络收集动态数据

使用 Crawl4AI 的设置步骤

要开始使用 Crawl4AI,让我们来看看安装使用步骤。该工具可以从 GitHub 安装,如果需要,Docker 也得到支持。

步骤 1: 安装 Crawl4AI

使用以下代码直接从 GitHub 安装 Crawl4AI:

!pip install "crawl4ai @ git+https://github.com/unclecode/crawl4ai.git"

步骤 2: 导入网页抓取模块

安装后,导入必要的模块以开始使用:

from crawl4ai import WebCrawler
  • 这行代码导入了 WebCrawler 类,这是 Crawl4AI 提供的核心工具,用于抓取网页内容。

步骤 3: 初始化抓取器

创建一个网页抓取器的实例并初始化它。这个实例允许您在网站上执行抓取操作。

# 创建 WebCrawler 实例
crawler = WebCrawler()

  • LocalSeleniumCrawlerStrategy 消息表示 Crawl4AI 在后台使用 Selenium 进行自动化浏览器抓取。这使得处理 JavaScript 密集型网站等动态内容成为可能。

从网站提取数据:

在这里,我们将使用 EU Startups 目录来提取关于卢森堡创业公司的信息。

result = crawler.run("https://www.eu-startups.com/directory/luxembourg")
print(result.markdown)

说明:

  • crawler.run(): 此函数接受一个 URL 作为输入,并从网站中提取数据。

  • result.markdown: 返回以 markdown 格式的提取内容。

  • 时间效率: 该过程通常在7–10 秒内完成,足以快速提取动态数据。

示例用例:从 CNBC 抓取商业新闻

您还可以使用 Crawl4AI 提取新闻文章。这是一个使用 CNBC 的例子:

result = crawler.run("https://www.cnbc.com")
print(result.markdown)

运行此代码后,新闻文章的内容将以 markdown 格式提供。这使得构建一个由 LLM 驱动的新闻总结器内容推荐系统变得非常容易。

高级用法:LLM 集成

Crawl4AI 支持高级的基于 LLM 的提取策略。您可以传递一个来自 OpenAI 或其他 LLM 提供商的 API 令牌,以直接提取结构化数据。

# 使用 OpenAI 提取结构化数据
import os
import asyncio
from crawl4ai import AsyncWebCrawler
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from pydantic import BaseModel, Field

class OpenAIModelFee(BaseModel):
    model_name: str = Field(..., description="Name of the OpenAI model.")
    input_fee: str = Field(..., description="Fee for input token for the OpenAI model.")
    output_fee: str = Field(..., description="Fee for output token for the OpenAI model.")

async def main():
    async with AsyncWebCrawler(verbose=True) as crawler:
        result = await crawler.arun(
            url='https://openai.com/api/pricing/',
            word_count_threshold=1,
            extraction_strategy=LLMExtractionStrategy(
                provider="openai/gpt-4o", api_token=os.getenv('OPENAI_API_KEY'), 
                schema=OpenAIModelFee.schema(),
                extraction_type="schema",
                instruction="""从抓取的内容中提取所有提到的模型名称及其输入和输出 token 的费用。
                不要遗漏整个内容中的任何模型。一个提取的模型 JSON 格式应如下所示: 
                {"model_name": "GPT-4", "input_fee": "US$10.00 / 1M tokens", "output_fee": "US$30.00 / 1M tokens"}."""
            ),            
            bypass_cache=True,
        )
        print(result.extracted_content)

if __name__ == "__main__":
    asyncio.run(main())

说明:

通过这种策略,您可以根据自己定义的模式来结构化输出,确保提取的数据干净并且可以用于分析。

  • **os:**访问环境变量(这里用于加载 API 密钥)。

  • **asyncio:**提供对异步编程的支持。

  • AsyncWebCrawler:Crawl4AI 提供的异步网页抓取器版本,允许同时进行操作。

  • LLMExtractionStrategy:定义如何使用大语言模型(LLM)提取特定数据。

  • pydantic.BaseModel:用于定义结构化数据提取的架构

这个脚本展示了如何使用 Crawl4AIOpenAI 的 GPT 模型从网页中提取结构化数据。Pydantic 模型的集成确保提取的数据具有良好的定义格式。通过使用异步编程,即使在涉及网络延迟的任务中,脚本也保持响应和高效。

Crawl4AI 的用例

  1. 构建聊天机器人: 从网站提取常见问题或支持内容,并构建**对话机器人。

  2. RAG 系统: 使用 Crawl4AI 获取实时数据,并将其馈送到**基于 RAG 的应用程序中。

  3. 数据收集以进行训练: 动态地收集数据集以训练或微调机器学习模型。

  4. 新闻聚合器: 抓取新闻网站并使用 LLMs 总结内容以提供个性化的信息流。


结论

Crawl4AI 是一个功能强大且友好的网页抓取器,为开发人员和 AI 爱好者简化了数据提取。其基于 markdown 的输出使其非常适合与大语言模型(LLM)集成,且使用简单,可以快速设置。无论您是在构建聊天机器人RAG 系统,还是自动化数据收集,Crawl4AI 都能显著简化您的工作流程。

AI奇想空间
AI奇想空间
https://aimazing.site
AI 奇想空间是一个汇聚人工智能工具、资源和教程的导航网站。 在这里,你可以发现最新的AI技术、工具和应用,学习如何使用各种 AI 平台和框架,获取丰富的 AI 资源。 欢迎广大 AI 爱好者加入我们的社区,开启你的AI之旅!
AI交流群
Copyright © 2024 AI奇想空间.微信