跳转到主要内容

安装

要安装 Firecrawl 的 Python SDK,可以使用 pip:
Python

使用

firecrawl.dev 获取 API 密钥,然后将其设置为 FIRECRAWL_API_KEY 环境变量,或在实例化 Firecrawl 类时直接传入。
没有 API 密钥? 你可以在不提供密钥的情况下构造 Firecrawl,并在无密钥的免费档位中使用 scrapesearchinteract (按 IP 限流——请参见 Rate Limits) 。所有其他方法都需要密钥。
Python

抓取单个 URL

使用 scrape 方法抓取单个 URL。它会以结构化数据的形式返回页面内容,包括 markdown、元数据以及你请求的其他任何 formats。
Python
Python SDK 会将所有响应字段名从 camelCase 转换为 snake_case。例如,API 中的元数据字段 (如 ogImageogTitlesourceURL) 在 SDK 响应中会变为 og_imageog_titlesource_url

解析上传的文件

使用 parse 可将本地文件 (htmlpdfdocxxlsx 等) 直接上传到 /v2/parseparse 不支持 changeTracking,也不支持仅适用于浏览器的选项,如 actions、wait_for、location、mobile、screenshot 和 branding。
Python

爬取网站

要爬取网站,请使用 crawl 方法。它接收起始 URL 和可选的 options 作为参数。通过 options,你可以为爬取任务指定其他设置,例如爬取的最大页面数、允许的域名,以及输出 formats。有关自动/手动分页与限制,请参见 Pagination
Python

仅站点地图抓取

使用 sitemap="only" 只抓取站点地图中的 URL (起始 URL 始终会被包含,并且不会进行 HTML 链接发现) 。
Python

开始 Crawl

想要非阻塞方式?请查看下方的异步类部分。
使用 start_crawl 启动任务,无需等待。它会返回一个用于检查状态的任务 ID。需要直到完成才返回的阻塞式等待器时,请使用 crawl。分页行为与限制见分页
Python

查看爬取状态

使用 get_crawl_status 查看爬取任务的状态。传入任务 ID,即可获取当前状态以及截至目前已收集到的结果。
Python

取消爬取

使用 cancel_crawl 方法取消爬取任务。传入由 start_crawl 返回的任务 ID,即可获取取消状态。
Python

网站映射

使用 map 生成网站的 URL 列表。你可以通过选项自定义映射过程,例如排除子域或利用 sitemap。
Python

使用 WebSockets 爬取网站

要通过 WebSockets 爬取网站,先用 start_crawl 启动任务,并使用 watcher 辅助工具订阅。调用 start() 之前,使用任务 ID 创建一个 watcher,并附加处理器 (例如:page、completed、failed) 。
Python
当有更多数据可用时,Firecrawl 的 crawl 和 batch scrape 端点会返回一个 next URL。Python SDK 默认会自动分页并汇总所有文档;此时 nextNone。你可以禁用自动分页或设置限制来控制分页行为。

PaginationConfig

在调用 get_crawl_statusget_batch_scrape_status 时,使用 PaginationConfig 来控制分页行为:
Python

手动分页辅助方法

auto_paginate=False 时,如果还有更多数据可用,响应中会包含一个 next URL。使用以下辅助方法来获取后续页面:
  • get_crawl_status_page(next_url) - 使用前一次响应中的不透明 next URL 获取爬取结果的下一页。
  • get_batch_scrape_status_page(next_url) - 使用前一次响应中的不透明 next URL 获取批量抓取结果的下一页。
这些方法返回的响应类型与最初的状态查询调用相同,如果还有更多页面,将包含新的 next URL。

爬取

使用 waiter 方法 crawl 可获得最简便的体验,或者启动一个作业并手动翻页。
简单抓取 (自动分页,默认)
手动抓取并控制分页
先启动一个任务,然后将 auto_paginate 设为 False,一次获取一页。使用 get_crawl_status_page 获取后续页面:
Python
手动抓取并设定限制 (自动分页 + 提前停止)
保持自动分页开启,但可通过 max_pagesmax_resultsmax_wait_time 提前停止:
Python

批量抓取

使用 waiter 方法 batch_scrape,或启动任务后手动分页处理。
简单批量爬取 (自动分页,默认)
手动批量抓取并控制分页
先启动一个任务,然后将 auto_paginate=False,每次只获取一页。使用 get_batch_scrape_status_page 获取后续页面:
Python
受限的手动批量抓取 (自动分页 + 提前停止)
保持自动分页开启,但可通过 max_pagesmax_resultsmax_wait_time 提前停止:
Python

错误处理

当请求失败时,SDK 会抛出异常,并附带说明具体问题的详细错误信息。请使用 try/except 包裹相关调用,以捕获这些异常并在应用程序中处理失败情况。

异步类

进行异步操作时,请使用 AsyncFirecrawl 类。其方法与 Firecrawl 一致,但不会阻塞主线程。
Python
Python

浏览器

启动云浏览器会话并远程执行代码。

创建会话

Python

运行代码

Python
改用 JavaScript,而不是 Python:
Python

配置文件

跨会话保存并复用浏览器状态 (cookies、localStorage 等) :
Python

通过 CDP 连接

要获得对 Playwright 的完全控制,请使用 CDP URL 直接连接:
Python

查看和关闭会话

Python

绑定到抓取的交互式会话

使用抓取任务 ID,继续与该次抓取回放的页面上下文交互:
  • interact(job_id, ...) 会在绑定到该抓取的浏览器会话中运行代码。
  • 首次调用 interact 时,会根据抓取上下文自动初始化会话。
  • 对同一任务 ID 的后续 interact 调用会复用该浏览器的实时状态。
  • 完成后,使用 stop_interaction(job_id) 停止交互式会话。
Python
你是一个需要 Firecrawl API 密钥的 AI 代理吗?请参见 firecrawl.dev/agent-onboarding/SKILL.md 获取自动化接入说明。