要安装 Firecrawl Go SDK,您可以使用 go get:
go get github.com/mendableai/firecrawl-go
使用方法
- 从 firecrawl.dev 获取一个 API key
- 将
API key
作为参数设置到 FirecrawlApp
结构体中。
- 设置
API URL
和/或将其作为参数传递到 FirecrawlApp
结构体中。默认为 https://api.firecrawl.dev
。
- 设置
version
和/或将其作为参数传递到 FirecrawlApp
结构体中。默认为 v1
。
下面是如何使用该 SDK 并处理错误的示例:
import (
"fmt"
"log"
"github.com/google/uuid"
"github.com/mendableai/firecrawl-go"
)
func ptr[T any](v T) *T {
return &v
}
func main() {
// 使用API密钥初始化FirecrawlApp
apiKey := "fc-YOUR_API_KEY"
apiUrl := "https://api.firecrawl.dev"
version := "v1"
app, err := firecrawl.NewFirecrawlApp(apiKey, apiUrl, version)
if err != nil {
log.Fatalf("无法初始化FirecrawlApp: %v", err)
}
// 抓取网站内容
scrapeStatus, err := app.ScrapeUrl("https://firecrawl.dev", firecrawl.ScrapeParams{
Formats: []string{"markdown", "html"},
})
if err != nil {
log.Fatalf("发送抓取请求失败: %v", err)
}
fmt.Println(scrapeStatus)
// 爬取网站内容
idempotencyKey := uuid.New().String() // 可选的幂等性键
crawlParams := &firecrawl.CrawlParams{
ExcludePaths: []string{"blog/*"},
MaxDepth: ptr(2),
}
crawlStatus, err := app.CrawlUrl("https://firecrawl.dev", crawlParams, &idempotencyKey)
if err != nil {
log.Fatalf("发送爬取请求失败: %v", err)
}
fmt.Println(crawlStatus)
}
抓取一个 URL
要抓取单个 URL 并处理错误,请使用 ScrapeURL
方法。它接受 URL 作为参数,并返回抓取的数据作为一个字典。
// 抓取一个网站
scrapeResult, err := app.ScrapeUrl("https://firecrawl.dev", map[string]any{
"formats": []string{"markdown", "html"},
})
if err != nil {
log.Fatalf("抓取 URL 失败: %v", err)
}
fmt.Println(scrapeResult)
爬取一个网站
要爬取一个网站,请使用 CrawlUrl
方法。它接受起始 URL 和可选参数作为参数。params
参数允许您指定额外的选项,例如要爬取的最大页面数、允许的域名和输出格式。
crawlStatus, err := app.CrawlUrl("https://firecrawl.dev", map[string]any{
"limit": 100,
"scrapeOptions": map[string]any{
"formats": []string{"markdown", "html"},
},
})
if err != nil {
log.Fatalf("发送爬取请求失败: %v", err)
}
fmt.Println(crawlStatus)
检查爬取状态
要检查爬取任务的状态,请使用 CheckCrawlStatus
方法。它接受任务 ID 作为参数,并返回爬取任务的当前状态。
// 获取爬取状态
crawlStatus, err := app.CheckCrawlStatus("<crawl_id>")
if err != nil {
log.Fatalf("获取爬取状态失败: %v", err)
}
fmt.Println(crawlStatus)
映射一个网站
使用 MapUrl
来生成网站的 URL 列表。params
参数让您可以自定义映射过程,包括排除子域或利用站点地图的选项。
// 映射一个网站
mapResult, err := app.MapUrl("https://firecrawl.dev", nil)
if err != nil {
log.Fatalf("无法映射 URL: %v", err)
}
fmt.Println(mapResult)
错误处理
SDK 会处理 Firecrawl API 返回的错误并抛出适当的异常。如果在请求过程中发生错误,将抛出带有描述性错误消息的异常。