跳至内容

Firecrawl:为 LLM 应用而生的 AI 网络爬虫

了解 Firecrawl 如何通过 AI 驱动的爬取、抓取与映射工具简化网页数据抽取。学习如何将其与 Python 和 AI 代理结合,驱动现代工作流。
已更新 2026年10月6日  · 8分钟 阅读

使用 AI 探索

ChatGPTClaudePerplexity

Firecrawl 是一种专为 AI 工作流优化的新型网络爬虫。它允许开发者抓取页面、网站,甚至整个网络。凭借对 JavaScript 的支持、自动转换为 Markdown,以及与主流 LLM 框架的集成等功能,它能够有效简化传统网页抓取的复杂性。

在本文中,我不仅会介绍 Firecrawl 的主要功能,还将分享一些实用的高级技巧、生态集成,并提及若干真实应用场景,帮助您快速上手实践。

什么是 Firecrawl?

Firecrawl 是由 Mendable.ai 开发的一款 AI 驱动的网络爬虫。它是一项 API 服务,可抓取网站并将其转换为干净、可直接用于 LLM 的数据,如 Markdown、JSON 等。

与 BeautifulSoup 或 Puppeteer 等传统爬虫不同,Firecrawl 采用 AI 驱动的方法,能够理解页面语境并清晰提取主要内容,而不是盲目抓取、常常返回杂乱数据。它可以将整个网站转化为干净的 Markdown 或结构化数据,非常适合 LLM 任务。

Firecrawl 有 3 种核心模式,稍后我会详细介绍。一般而言,您会使用 scrape 模式抓取单个 URL,使用 crawl 模式抓取整个网站,使用 map 模式进行 URL 发现。

Firecrawl 的关键特性

Firecrawl 的突出之处在于:它无需站点地图即可通过智能导航机制工作;可处理大量 JavaScript 和动态网页内容;输出可为干净的 Markdown、HTML、JSON、截图等,使用灵活;内置代理、反爬与缓存机制;支持批处理并发,适配大规模作业;高度可定制,例如可排除特定标签、使用自定义请求头进行抓取、设置抓取深度等;并且能与 LangChain、LlamaIndex、CrewAI 等 LLM 框架良好集成;同时适用于企业场景,您可以设置速率限制、并发控制与可靠性。

如何设置 Firecrawl

Firecrawl 的妙处在于上手非常快。以下是在系统中安装的主要步骤:

API 密钥配置

  1. 在 firecrawl.dev 注册以获取 API 密钥。
  2. 安装 Python 客户端库:
pip install firecrawl

如果您使用 langchain,请使用

pip install firecrawl-py
  1. 通过环境变量安全存储 API 密钥:
import os
from firecrawl import FirecrawlApp

# Set your Firecrawl API key as an environment variable for security
api_key = os.getenv('FIRECRAWL_API_KEY')
# Create an instance of the FirecrawlApp class with your API key 
app = FirecrawlApp(api_key=api_key)

基础抓取示例

您可以直接使用 .scrape_url() 方法完成首次抓取:

response = app.scrape_url(url=example.com', formats=['markdown'])
print(response)

此代码会将 firecrawl.dev 网页的主要内容以 Markdown 形式检索出来。

了解 Firecrawl 的模式与端点

Firecrawl 提供三种核心模式,用于定义抓取范围的广度。本节将逐一讲解。

Scrape 模式

Scrape 模式面向单个 URL,适合提取产品详情或新闻文章。通过 llm_extract 参数可启用基于模式(schema)的抽取。您需要做的是定义最终 JSON 的目标模式,初始化配置,并开始抓取:

from firecrawl import JsonConfig
from pydantic import BaseModel

# Define the expected data structure for the JSON extraction schema
class ExtractSchema(BaseModel):
    company_mission: str
    supports_sso: bool
    is_open_source: bool
    is_in_yc: bool

# Define the JSON configuration and set it to llm extraction mode
json_config = JsonConfig(
    extractionSchema=ExtractSchema.model_json_schema(),
    mode="llm-extraction",
    pageOptions={"onlyMainContent": True}
)

# Scrape the URL, extract data, and format it into JSON
llm_extraction_result = app.scrape_url(
    'https://firecrawl.dev',
    formats=["json"],
    json_options=json_config
)
print(llm_extraction_result)

这是另一类单 URL 抓取示例,这次使用基于选择器的抽取:

# Get a screenshot of the top of the overview page
scrape_result = app.scrape_url('firecrawl.dev', 
    formats=['markdown', 'html', "screenshot"], 
    actions=[
        {"type": "wait", "milliseconds": 3000},
        {"type": "click", "selector": "h1"},
        {"type": "wait", "milliseconds": 3000},
        {"type": "scrape"},
        {"type": "screenshot"}
    ],
)
print(scrape_result)

该脚本先打开网站,等待 3000 毫秒,点击第一个 h1 选择器,再次等待,然后抓取并保存当前页面的截图。若出现超时错误,请尝试在超时参数之外同时增加等待时间。

Crawl 模式

Crawl 模式允许您在无需站点地图的情况下抓取整个网站,包括所有可访问的子页面。它会返回一个作业 ID 以跟踪进度,并在需要获取额外信息(如请求头与时间戳)时支持元数据检索;支持速率控制以限制访问频率;并可设置递归深度决定跟随多少层级的链接。爬虫的步骤如下:

  1. 首先,爬虫打开给定的 URL
  2. 对其进行抓取
  3. 扫描所有指向子页面的超链接,并为其分配独立的爬虫任务
  4. 重复上述步骤,直到达到设定的最大限制。

下面是使用 Python requests 的爬虫示例:

import requests

url = "https://api.firecrawl.dev/v1/crawl" 
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}
data = {
    "url": "https://docs.firecrawl.dev", 	# site to crawl
    "limit": 100, 		# max items
    "scrapeOptions": {
        "formats": ["markdown", "html"]  	# output formats
    }
}

response = requests.post(url, headers=headers, json=data)

print(response.status_code)
print(response.json())

这段代码指示 Firecrawl 从 https://docs.firecrawl.dev 最多获取 100 个页面,并分别以 Markdown 与 HTML 格式返回每个页面,随后打印结果。

如需进一步了解 API,请查看我们的课程 Introduction to APIs in Python、代码演练 Working with APIs in Python,以及教程 Mastering Python APIs: A Comprehensive Guide to Building and Using APIs in Python。

Map 模式

Map 模式可让您输入一个网站,并以极高速度即时检索站内所有 URL。我们创建 /map 的原因正是如此:它能将单个 URL 转化为完整的网站地图。该模式非常适合在需要提示终端用户选择要抓取的链接时使用,或在需要快速发现站内全部 URL、借助搜索参数聚焦特定主题相关页面、或将抓取限制在特定页面时使用。

需要注意:由于该端点优先考虑速度,可能无法捕获所有链接。

# Map a website:
map_result = app.map_url('https://firecrawl.dev')
print(map_result)

这段代码指示 Firecrawl 发现 https://firecrawl.dev 页面中的所有链接,并将其列出。

Firecrawl 的真实应用

正如前文所述,Firecrawl 是一款可用于多种任务的多面手,在真实场景中非常实用。例如,抓取招聘网站或新闻网站以汇总最新职位或文章用于分析,或用于训练您的预测类机器学习模型。您还可以通过抓取的评论开展情感分析,例如收集来自电商或 Amazon 等点评网站的客户评价,用于分析情绪、指导业务决策。

这还可以与价格监测配合使用,例如跟踪多平台的产品价格以识别趋势或在降价时触发告警。此外,您可以利用 Firecrawl 抽取技术文档,用于训练或辅助 AI 代理,以提升其知识库;或将数据摄取到多代理 AI 流水线中,类似 CAMEL-AI 的做法。

它还可为检索增强生成(RAG)系统提供结构化的网页数据,从而提升模型表现并降低幻觉程度。

高级技巧与最佳实践

要最大化发挥 Firecrawl 的潜力,这里给出一些高级技巧与最佳实践:

  • 通过 /extract 端点基于提示或模式返回结构化数据,为您的 LLM 提取结构化数据;LLM 处理此类数据通常优于原始 HTML。

  • 通过实现带指数退避的重试逻辑来处理错误与重试,从容应对短暂的 API 故障。

  • 利用 Firecrawl 的异步抓取来提升性能,发起大型抓取而不阻塞您的应用,非常适合 Web 应用或服务。

  • 使用 max_depth 或 exclude 等参数过滤抓取范围,将其限定在特定子域或页面类型,按需减少无用数据。

  • 使用 Python 工具验证并清洗抓取数据,例如做数据均衡、删除空值等。pandas、numpy、seaborn 等都很适合这些任务。若想进一步学习数据清洗,请参考我们的课程 Cleaning Data in Python。

Firecrawl 与传统抓取工具对比

Firecrawl 具备众多优势,使其在大多数情况下都是上佳之选,并在与 Scrapy、BeautifulSoup、Puppeteer 等传统抓取工具的对比中脱颖而出。它能轻松处理由 JavaScript 渲染的内容,而像 BeautifulSoup 这类工具则需要借助 Selenium 等附加工具,且常需手动检查。它内置代理轮换并能处理速率限制,较之 Scrapy 需要大量时间的手动配置,大幅缩短了搭建时间。此外,Firecrawl 的 LLM 抽取能力可提供结构化数据,这是多数传统工具所不具备的功能。

不过,在特定情况下传统工具可能更合适,例如您需要本地运行时,像 BeautifulSoup 这样的工具无需依赖 API 即可在本地执行,适合不希望使用云服务的用户。有时实现的便捷与高效会以极致定制化为代价,例如 Scrapy 可为高度可定制的抓取流水线提供细粒度控制。

集成与生态支持

Firecrawl 能与众多常见 LLM 框架良好集成,且具备稳健的生态支持,进一步增强其在 AI 工作流中的实用性。您可以通过 FirecrawlLoader 模块集成 LangChain,便捷地将网页数据引入 LangChain 流水线;也可与 LlamaIndex 配合使用,FirecrawlReader 支持加载网页数据用于索引与查询。Firecrawl 还是 CrewAI 框架中用于网站抓取的内置工具,并与 Flowise、Dify、CAMEL-AI 等众多框架广泛兼容。

定价方案与使用限制

Firecrawl 提供多种定价方案,按使用场景满足不同需求。请务必查看 Firecrawl 官方定价页面,以防信息变更。

  • 免费层:包含有限额度,适合测试与小型项目。
  • 爱好者层:以较低成本为个人或小团队提供更多额度。
  • 标准、成长、企业层:提供递增额度、更高速率限制,以及每分钟自定义请求(RPM)等高级功能。

额度体系如下:

方案

额度

功能

最适合

Free

Limited

基础抓取、测试

初学者、小型项目

Hobby

Moderate

更多额度、标准功能

个人开发者

Standards

High

更高速率限制、高级功能

成长型团队

Growth

Very High

可扩展、自定义选项

大型项目

Enterprise

Unlimited

自定义 RPM、专属支持

高吞吐、企业级使用

结语

Firecrawl 在网页数据抽取方面具有颠覆性,尤其适用于 AI 应用。通过将网站转化为干净、结构化、可直接用于 LLM 的数据,它助力开发者更高效地构建智能系统。其易用性、丰富特性与广泛集成,使其成为从 RAG 工作流中的价格监测等各类任务的首选工具。

建议您先体验 Firecrawl 的免费层以测试其能力。欢迎加入 Firecrawl 的 GitHub 与 Discord 社区,获取更新、技巧与支持。

借助 Firecrawl,网页数据不再是难题,而是推动您 AI 创新的强大资产。

下一步,我推荐以下课程与代码演练:


Iheb Gafsi's photo
Author
Iheb Gafsi
LinkedIn

我从事加速型 AI 系统的研发,面向去中心化数据与分布式工作负载,构建支持边缘智能的联邦式机器学习流水线。我的工作重点包括大模型、语音处理、计算机视觉、强化学习以及先进的机器学习拓扑结构。

常见问题

为什么我会遇到超时错误?

您应先检查是否正确使用了 API 密钥,然后调试网站是否能正确定位到您要抓取的部分。

Firecrawl 只使用 AI 驱动的检索吗?

不会,您可以使用多种检索方式,例如基于选择器和基于 LLM 的检索。

Firecrawl 能处理包含大量 JavaScript 的网站吗?

是的,Firecrawl 即使在动态网站上也能保持良好表现。

在什么情况下我会选择 BeautifulSoup 等传统工具而不是 FireCrawl?

BeautifulSoup 可本地运行、免费,且适合处理简单的 HTML 抓取。

我可以免费测试 Firecrawl 吗?

可以,作为测试用户,您每分钟的请求数是有限制的。

主题
人工智能
Python

与 DataCamp 一起学习

课程

Python Web 爬取

4 小时
94.3K
学习使用 Python 库 scrapy 从互联网检索并解析信息。
查看详情Right Arrow
开始课程
查看更多Right Arrow