安装

要安装 Firecrawl Go SDK,您可以使用 go get:

Go
go get github.com/mendableai/firecrawl-go

使用方法

  1. firecrawl.dev 获取一个 API key
  2. API key 作为参数设置到 FirecrawlApp 结构体中。
  3. 设置 API URL 和/或将其作为参数传递到 FirecrawlApp 结构体中。默认为 https://api.firecrawl.dev
  4. 设置 version 和/或将其作为参数传递到 FirecrawlApp 结构体中。默认为 v1

下面是如何使用该 SDK 并处理错误的示例:

Go
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 作为参数,并返回抓取的数据作为一个字典。

Go
// 抓取一个网站
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 参数允许您指定额外的选项,例如要爬取的最大页面数、允许的域名和输出格式。

Go
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 作为参数,并返回爬取任务的当前状态。

Go
// 获取爬取状态
crawlStatus, err := app.CheckCrawlStatus("<crawl_id>")

if err != nil {
  log.Fatalf("获取爬取状态失败: %v", err)
}

fmt.Println(crawlStatus)

映射一个网站

使用 MapUrl 来生成网站的 URL 列表。params 参数让您可以自定义映射过程,包括排除子域或利用站点地图的选项。

Go
// 映射一个网站
mapResult, err := app.MapUrl("https://firecrawl.dev", nil)
if err != nil {
  log.Fatalf("无法映射 URL: %v", err)
}

fmt.Println(mapResult)

错误处理

SDK 会处理 Firecrawl API 返回的错误并抛出适当的异常。如果在请求过程中发生错误,将抛出带有描述性错误消息的异常。