第 7 课 — Map 与 Crawl:整站采集策略
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)
(申请发送: agentupdate)
当你需要从一个大型网站抓取大量内容(如构建 RAG 知识库)时,单页抓取已力不从心。Firecrawl 提供了 Map 和 Crawl 两个强大的整站级工具。
7.1 Map:发现站点的所有 URL
Map 就像一个快速的“测绘员”,它会扫描目标网站并返回一个包含所有公开 URL 的列表,而不抓取页面内容。
为什么用 Map?
- 速度极快:几秒钟内发现成千上万个链接。
- 定向搜索:使用
search参数只找出相关的 URL。示例:
firecrawl_map(url="https://docs.firecrawl.dev", search="webhook")只返回路径包含 webhook 的文档地址。
7.2 Crawl:全自动深度抓取
Crawl 会沿着链接深度抓取整站的内容。这是一个异步操作,适合处理大规模任务。
关键参数:
maxDiscoveryDepth:抓取深度。建议设为 1-3,过深容易抓到无关内容。limit:总抓取页数限制。建议设为 ≤ 50,以防返回数据量过大导致 LLM 处理失败。includePaths:只抓取匹配路径下的页面(如["/docs/"])。
7.3 异步工作流 (Job ID)
由于 Crawl 耗时较长,它的工作模式如下:
- 发起请求:返回一个
Job ID。 - 轮询状态:使用
firecrawl_check_crawl_status传入 ID。 - 获取结果:当状态变为
completed时,获取包含所有页面内容的数组。
7.4 最佳实践:Map + Batch Scrape (推荐)
对于追求极致控制的开发者,我们推荐以下策略,而非直接使用 Crawl:
- Step 1:用 Map 发现全站 URL。
- Step 2:在应用层根据关键词、深度或路径过滤出真正需要的 URL 列表。
- Step 3:循环调用 Scrape 或使用 Extract 对这些 URL 进行分批抓取。
这种策略的优势:
- 更精准:完全避开无关页面(如登录页、法律声明)。
- 更可靠:单次请求数据量可控,避免 Token 溢出或请求超时。
- 更省钱:只为真正有价值的页面支付 Credit。