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 分钟跑起来 ⏱️
- 把项目克隆到本地:
git clone https://gitcode.com/GitHub_Trending/fi/firecrawl- 在仓库根目录用 Docker Compose 启动,一次拉起 API、worker、Playwright、Redis 等依赖,只有 API 端口对宿主机开放:
docker compose up -d- 浏览器访问
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,支持按关键词检索站内页面。
典型场景:整站文档导入知识库、竞品商品目录批量入库。
一个完整案例:监控商品价格变动 📊
以电商价格监控为例,完整流程串起来是这样的:
- 锁定目标页:用 map 功能列出某商品频道下的页面,挑出要盯的几个商品 URL;页面少的话直接手工维护一个 URL 列表也行。
- 定时抓取:写一个定时任务(cron 或任意调度器),每个周期调用 scrape,把价格、库存、商品名定义成结构化输出,而不是自己去正则 HTML。
- 落库留痕:每次结果连同时间戳写进数据库,只存你要的字段,历史数据自然沉淀。
- 可视化:基于历史数据画趋势图或做简单阈值告警,价格下降时收到通知。
仓库里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),仅供参考