高级爬取指南
通过本文了解如何利用 Firecrawl 的高级选项优化数据抓取
基础抓取 (/scrape 端点)
使用 /scrape 端点抓取单个页面并获取干净 Markdown 内容
Python
# 先安装库# pip install firecrawl-pyfrom firecrawl import FirecrawlAppapp = FirecrawlApp(api_key="YOUR_API_KEY")content = app.scrape_url("https://docs.firecrawl.dev")
PDF 抓取功能
Firecrawl 默认支持 PDF 抓取。直接使用 /scrape 端点抓取 PDF 链接即可获取文本内容。通过设置 parsePDF 为 false 可禁用此功能
抓取参数配置
使用 /scrape 端点时,可通过以下参数定制抓取行为:
响应格式设置 formats
• 类型: array
• 可选值: ["markdown", "links", "html", "rawHtml", "screenshot", "json"]
• 说明: 指定返回内容格式:
◦ markdown: 返回 Markdown 格式内容
◦ links: 包含页面所有链接
◦ html: 返回处理后的 HTML
◦ rawHtml: 返回原始 HTML
◦ screenshot: 包含页面截图
◦ json: 通过 LLM 提取结构化数据
• 默认值: ["markdown"]
完整内容获取 onlyMainContent
• 类型: boolean
• 说明: 默认仅返回主要内容(排除页眉、导航栏、页脚等),设为 false 获取完整页面内容
• 默认值: true
元素包含规则 includeTags
• 类型: array
• 说明: 指定需要包含的 HTML 标签/类名/ID
• 默认值: 未定义
元素排除规则 excludeTags
• 类型: array
• 说明: 指定需要排除的 HTML 标签/类名/ID
• 默认值: 未定义
页面加载等待 waitFor
• 类型: integer
• 说明: 设置页面加载等待时间(毫秒),建议仅在必要时使用
• 默认值: 0
超时设置 timeout
• 类型: integer
• 说明: 设置抓取超时时间(毫秒)
• 默认值: 30000 (30秒)
完整参数示例
curl -X POST https://api.firecrawl.dev/v1/scrape \-H 'Content-Type: application/json' \-H 'Authorization: Bearer YOUR_API_KEY' \-d '{"url": "https://docs.firecrawl.dev","formats": ["markdown", "links", "html", "rawHtml", "screenshot"],"includeTags": ["h1", "p", "a", ".main-content"],"excludeTags": ["#ad", "#footer"],"onlyMainContent": false,"waitFor": 1000,"timeout": 15000}'
此配置将实现:
• 返回完整页面内容(Markdown 格式) • 包含 Markdown、原始 HTML、处理后 HTML、链接和截图 • 仅包含指定标签元素(h1/p/a/.main-content) • 排除广告和页脚元素(#ad/#footer) • 页面加载等待 1 秒 • 15 秒超时限制
完整 API 文档参考:Scrape Endpoint Documentation
结构化数据抽取
通过 extract 参数配置结构化数据抽取选项:
LLM 抽取配置
数据模式 schema
• 类型: object
• 必填: 当未提供 prompt 时必填
• 说明: 定义数据抽取结构
系统指令 system prompt
• 类型: string
• 必填: 否
• 说明: LLM 系统级指令
抽取指令 prompt
• 类型: string
• 必填: 当未提供 schema 时必填
• 示例: "提取产品功能列表"
使用示例
curl -X POST https://api.firecrawl.dev/v0/scrape \-H 'Content-Type: application/json' \-H 'Authorization: Bearer YOUR_API_KEY' \-d '{"url": "https://firecrawl.dev","formats": ["markdown", "json"],"json": {"prompt": "提取产品功能列表"}}'
响应示例:
{"success": true,"data": {"extract": {"product": "Firecrawl","features": {"general": {"description": "网站数据 LLM 化工具","openSource": true,"useCases": ["AI 应用开发","数据科学研究","市场分析","内容聚合"]},"crawlingAndScraping": {"crawlAllAccessiblePages": true,"dynamicContentHandling": true}}}}}
交互动作支持
通过配置 actions 参数实现页面交互操作:
支持的动作类型
等待 wait
• 类型: object
• 参数:
◦ milliseconds: 等待时长(毫秒)
• 示例:
Copy```json{ "type": "wait", "milliseconds": 2000 }```
截图 screenshot
• 类型: object
• 参数:
◦ fullPage: 是否截取完整页面(默认 false)
• 示例:
Copy```json{ "type": "screenshot", "fullPage": true }```
点击 click
• 类型: object
• 参数:
◦ selector: 元素选择器
• 示例:
```json{ "type": "click", "selector": "#load-more-button" }```
输入 write
• 类型: object
• 参数:
◦ text: 输入内容
◦ selector: 输入框选择器
• 示例:
Copy```json{ "type": "write", "text": "搜索内容", "selector": "#search-input" }```
按键 press
• 类型: object
• 参数:
◦ key: 按键名称
• 示例:
Copy```json{ "type": "press", "key": "Enter" }```
滚动 scroll
• 类型: object
• 参数:
◦ direction: 滚动方向(up/down)
◦ amount: 滚动距离(像素)
• 示例:
Copy```json{ "type": "scroll", "direction": "down", "amount": 500 }```
完整动作参数参考:API Reference
多页面爬取 (/crawl 端点)
使用 /crawl 端点爬取网站所有可访问页面:
Copy
curl -X POST https://api.firecrawl.dev/v1/crawl \-H 'Content-Type: application/json' \-H 'Authorization: Bearer YOUR_API_KEY' \-d '{"url": "https://docs.firecrawl.dev"}'
返回任务 ID:
{ "id": "1234-5678-9101" }
查询爬取状态
curl -X GET https://api.firecrawl.dev/v1/crawl/1234-5678-9101 \-H 'Content-Type: application/json' \-H 'Authorization: Bearer YOUR_API_KEY'
分页机制
当数据超过 10MB 或任务未完成时,响应包含 next 参数用于获取后续数据
爬取参数配置
路径包含规则 includePaths
• 类型: array
• 示例: ["/blog/*", "/products/*"]
路径排除规则 excludePaths
• 类型: array
• 示例: ["/admin/*", "/login/*"]
最大深度 maxDepth
• 类型: integer
• 说明:
◦ 0: 仅爬取当前页面
◦ 1: 爬取当前页面及一级子页面
◦ 2: 爬取至二级子页面
数量限制 limit
• 类型: integer
• 默认值: 10000
允许回链 allowBackwardLinks
• 类型: boolean
• 说明: 允许爬取上级目录链接
• 默认值: false
允许外链 allowExternalLinks
• 类型: boolean
• 说明: 允许爬取外部域名链接
• 默认值: false
嵌套抓取配置 scrapeOptions
• 类型: object
• 说明: 继承 抓取参数配置
• 默认值: { "formats": ["markdown"] }
完整配置示例
curl -X POST https://api.firecrawl.dev/v1/crawl \-H 'Content-Type: application/json' \-H 'Authorization: Bearer YOUR_API_KEY' \-d '{"url": "https://docs.firecrawl.dev","includePaths": ["/blog/*", "/products/*"],"excludePaths": ["/admin/*", "/login/*"],"maxDepth": 2,"limit": 1000}'
此配置将:
• 仅爬取 /blog 和 /products 路径 • 排除管理后台和登录页面 • 爬取深度限制为 2 级 • 最多爬取 1000 个页面
网站链接地图 (/map 端点)
通过 /map 端点快速获取网站链接关系图
Copy
curl -X POST https://api.firecrawl.dev/v1/map \-H 'Content-Type: application/json' \-H 'Authorization: Bearer YOUR_API_KEY' \-d '{"url": "https://docs.firecrawl.dev"}'
响应示例:
Copy
{"success": true,"links": ["https://docs.firecrawl.dev","https://docs.firecrawl.dev/api-reference/crawl-endpoint","https://docs.firecrawl.dev/getting-started","..."]}
高级参数
关键词搜索 search
• 类型: string
• 示例: "blog"
数量限制 limit
• 类型: integer
• 默认值: 100
忽略站点地图 ignoreSitemap
• 类型: boolean
• 默认值: true
包含子域名 includeSubdomains
• 类型: boolean
• 默认值: false
完整文档参考:Map Endpoint Documentation
