在当今的数据驱动世界中,网页数据的抓取和提取是构建高级 AI 工具的基本技术。无论您是在建立聊天机器人、基于检索增强生成(RAG)系统的应用程序,还是仅仅收集数据进行分析,能够访问实时和相关的信息都是至关重要的。在这篇文章中,我们将探索 Crawl4AI,一个开源、友好的网页抓取器,它能轻松地从网站提取数据。
如果您正在寻找简单易懂、适合初学者的指南,本文章将引导您了解设置、关键功能以及如何有效利用 Crawl4AI 为您的 AI 项目服务。
什么是 Crawl4AI?
Crawl4AI 是一个在 GitHub 上提供的开源网页抓取器,旨在简化从网站提取数据的过程。它特别适用于构建以下应用:
-
由大语言模型(LLM)驱动的聊天机器人
-
从网络获取实时数据的基于 RAG 的系统
-
AI 代理的函数调用
-
自动内容聚合器和信息发现工具
与传统抓取器不同,Crawl4AI 提供基于 markdown 的输出,这确保了提取的数据兼容大语言模型,并易于与像 OpenAI 的 GPT 或 Meta 的 Llama 这样的模型集成。
为什么要使用 Crawl4AI?
-
易于使用: 只需几行代码即可开始。
-
Markdown 输出: 提取的内容以 markdown 格式返回,方便**大语言模型(LLM)**理解。
-
与 LLM 集成: 您可以将 Crawl4AI 与 OpenAI 或其他 LLM 提供商结合使用,以在提取时结构化数据。
-
多种选择: 可直接从 GitHub 安装,或使用 Docker 设置用于更大规模的应用。
-
自动化友好: 可用于计划的 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
:用于定义结构化数据提取的架构。
这个脚本展示了如何使用 Crawl4AI 和 OpenAI 的 GPT 模型从网页中提取结构化数据。Pydantic 模型的集成确保提取的数据具有良好的定义格式。通过使用异步编程,即使在涉及网络延迟的任务中,脚本也保持响应和高效。
Crawl4AI 的用例
-
构建聊天机器人: 从网站提取常见问题或支持内容,并构建**对话机器人。
-
RAG 系统: 使用 Crawl4AI 获取实时数据,并将其馈送到**基于 RAG 的应用程序中。
-
数据收集以进行训练: 动态地收集数据集以训练或微调机器学习模型。
-
新闻聚合器: 抓取新闻网站并使用 LLMs 总结内容以提供个性化的信息流。
结论
Crawl4AI 是一个功能强大且友好的网页抓取器,为开发人员和 AI 爱好者简化了数据提取。其基于 markdown 的输出使其非常适合与大语言模型(LLM)集成,且使用简单,可以快速设置。无论您是在构建聊天机器人、RAG 系统,还是自动化数据收集,Crawl4AI 都能显著简化您的工作流程。