此 SDK 目前使用 Firecrawl API 的 v1 版本,非最新(已提供 v2)。部分功能和改进可能仅在 v2 中可用。
go get github.com/mendableai/firecrawl-go
- 从 firecrawl.dev 获取 API 密钥。
- 在 FirecrawlApp结构体中将API key设置为参数。
- 设置 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) 
}
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 参数,你可以为爬取任务设置其他选项,例如最大爬取页数、允许的域名以及输出 formats。
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)