Firecrawl 网页抓取完整指南:从单页到整站的数据提取
2026/9/16 0:42:25 网站建设 项目流程

Firecrawl 网页抓取完整指南:从单页到整站的数据提取

【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 🔥项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawl

自己写爬虫的人都知道:JS 渲染的页面拿不到内容、反爬策略层出不穷、HTML 清洗又得单独维护一堆规则。这些琐碎问题加起来,往往比"拿数据"本身还费时间。Firecrawl 就是为了解决这件事的:它把搜索、抓取、页面交互统一成一套 API,输入 URL 或一句需求,输出干净的 Markdown 或结构化 JSON,可以直接喂给 LLM 或存进数据库。项目开源,既可以调用托管服务,也可以自己部署。

它替你解决什么

功能解决的问题什么时候用
Scrape 单页抓取HTML 清洗、JS 渲染内容获取想把一个页面变成干净文本或截图
Crawl 整站爬取逐页手工遍历、维护爬取队列需要批量导入文档站、商品目录
Search 网页搜索只拿到标题和链接,还得自己请求正文不知道目标 URL,要先找到再读全文
Agent 智能提取手动解析字段、写选择器需要价格、参数这类结构化数据
Interact 页面交互动态内容需要点击、输入后才出现抓取前要滚动、搜索或登录操作

5 分钟跑起来 ⏱️

  1. 把项目克隆到本地:
git clone https://gitcode.com/GitHub_Trending/fi/firecrawl
  1. 在仓库根目录用 Docker Compose 启动,一次拉起 API、worker、Playwright、Redis 等依赖,只有 API 端口对宿主机开放:
docker compose up -d
  1. 浏览器访问localhost:3002,API 有响应就算起来了。不想自己运维的话,也可以直接注册官方托管服务拿 API key,跳过上面两步。写业务代码前,用 pip 装一下 Python SDK(firecrawl-py),把 key 设为环境变量FIRECRAWL_API_KEY即可。

功能怎么用

单页抓取:把任意 URL 变成干净数据

一句话作用:给一个 URL,返回你要的格式——markdown、HTML、截图或结构化 JSON。

使用方式:调用 SDK 的 scrape 方法,传入目标 URL 和格式列表(如只要 markdown,或同时加 html)。可以进一步要求只保留正文内容,或按标签过滤页面元素;对 PDF、DOCX 这类文档链接也能直接解析出内容。

典型场景:把博客文章转成 Markdown 存进 RAG 知识库,或批量转存产品页文字。抓取请求的配置界面如下,URL、选项和模型都可以直接指定:

搜索:找网页和读全文一步到位

一句话作用:搜索网络,并且把命中结果页面的完整内容一起返回,省掉你二次请求的环节。

使用方式:调用 search 方法,传入查询词和结果条数上限,返回的每条记录里就带有 URL、标题和 markdown 正文。

典型场景:让 AI agent 调研某个话题时,它能自己"先找到来源,再读完内容",而不是只拿到一堆链接。

整站爬取:一个请求拿下一个站点

一句话作用:给站点首页 URL,爬取所有可访问页面,逐页返回内容。

使用方式:调用 crawl 方法,传入站点 URL 和页数上限。它是异步任务,SDK 会自动轮询状态直到完成,你拿到的就是每页的 markdown 和元数据。如果想先了解站点规模,可以配合 map 功能枚举 URL,支持按关键词检索站内页面。

典型场景:整站文档导入知识库、竞品商品目录批量入库。

一个完整案例:监控商品价格变动 📊

以电商价格监控为例,完整流程串起来是这样的:

  1. 锁定目标页:用 map 功能列出某商品频道下的页面,挑出要盯的几个商品 URL;页面少的话直接手工维护一个 URL 列表也行。
  2. 定时抓取:写一个定时任务(cron 或任意调度器),每个周期调用 scrape,把价格、库存、商品名定义成结构化输出,而不是自己去正则 HTML。
  3. 落库留痕:每次结果连同时间戳写进数据库,只存你要的字段,历史数据自然沉淀。
  4. 可视化:基于历史数据画趋势图或做简单阈值告警,价格下降时收到通知。

仓库里examples/blog-articles/amazon-price-tracking/就有一篇用 Firecrawl 做亚马逊价格跟踪的完整示例,下面这张图就是其中搭建出来的价格趋势面板:

常见的坑

  • 现象:抓回来的内容几乎是空的,只剩导航栏。原因:页面内容是 JS 动态渲染的,静态请求只能拿到骨架。对策:确认走的是浏览器渲染(自托管时 Playwright 服务必须正常启动);如果内容还要先点击才出现,改用 interact 先操作再提取。

  • 现象:整站 crawl 迟迟不结束,或中途超时。原因:页数上限设得太高,或站点链接结构复杂、触发了目标站限流。对策:先用 map 摸清 URL 规模再定 limit;分批爬取,失败页面单独重试。

  • 现象:结构化提取缺字段,或字段值明显错误。原因:schema 里字段描述含糊,或页面本身就没有对应信息。对策:先在输出里加 markdown 格式人工核对页面确实有这条信息,再给 schema 字段写清含义。

  • 现象:自托管服务起不来,访问 3002 端口无响应。原因:依赖服务(Redis、数据库等)未就绪,或端口被占用。对策:用docker compose logs看各容器日志,按仓库里的 SELF_HOST.md 核对环境变量和端口配置。

速查参考

入口 / 参数说明
search网页搜索并返回结果页完整内容
scrape单页提取,可选 markdown / html / 截图 / JSON
crawl整站爬取,异步任务,SDK 自动轮询
map枚举站内所有 URL,可加关键词检索
interact抓取后对页面执行点击、滚动、输入
agent一句话描述需求,AI 自动找数据
FIRECRAWL_API_KEY环境变量,认证入口
自托管端口3002默认只暴露 API 服务

接下来

从单个 scrape 请求开始试起,跑通之后再接触 crawl 和 agent,上手曲线会很平缓。可以接着看仓库里的 自托管指南 SELF_HOST.md 和 Python SDK 源码目录 apps/python-sdk/,后者包含各功能方法的完整示例与测试用例。

【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 🔥项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawl

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询