安装

要安装 Firecrawl Node SDK,您可以使用 npm:

Node
npm install @mendable/firecrawl-js

使用

  1. firecrawl.dev 获取一个 API key。
  2. 将 API key 设置为环境变量 FIRECRAWL_API_KEY 或将其作为参数传递给 FirecrawlApp 类。

以下是一个如何使用 SDK 并处理错误的示例:

Node
import FirecrawlApp, { CrawlParams, CrawlStatusResponse } from '@mendable/firecrawl-js';

const app = new FirecrawlApp({apiKey: "fc-YOUR_API_KEY"});

// 抓取网站内容
const scrapeResponse = await app.scrapeUrl('https://firecrawl.dev', {
  formats: ['markdown', 'html'],
});

if (!scrapeResponse.success) {
  throw new Error(`抓取失败: ${scrapeResponse.error}`);
}

console.log(scrapeResponse);

// 爬取网站内容
const crawlResponse = await app.crawlUrl('https://firecrawl.dev', {
  limit: 100,
  scrapeOptions: {
    formats: ['markdown', 'html'],
  }
});

if (!crawlResponse.success) {
  throw new Error(`爬取失败: ${crawlResponse.error}`);
}

console.log(crawlResponse);

抓取 URL

要抓取单个 URL 并处理错误,请使用 scrapeUrl 方法。它接受 URL 作为参数,并返回抓取的数据作为字典。

Node
// 抓取一个网站:
const scrapeResult = await app.scrapeUrl('firecrawl.dev', { formats: ['markdown', 'html'] });

if (!scrapeResult.success) {
  throw new Error(`抓取失败: ${scrapeResult.error}`);
}

console.log(scrapeResult);

爬取网站

要爬取网站并处理错误,请使用 crawlUrl 方法。它接受起始 URL 和可选参数作为参数。params 参数允许您指定爬取作业的其他选项,如最大爬取页面数、允许的域名和输出格式。

Node
const crawlResponse = await app.crawlUrl('https://firecrawl.dev', {
  limit: 100,
  scrapeOptions: {
    formats: ['markdown', 'html'],
  }
})

if (!crawlResponse.success) {
  throw new Error(`Failed to crawl: ${crawlResponse.error}`)
}

console.log(crawlResponse)

异步爬取

要异步爬取网站,请使用 crawlUrlAsync 方法。它返回爬取作业的 ID,您可以用它来检查爬取作业的状态。它接受起始 URL 和可选参数作为参数。params 参数允许您指定爬取作业的其他选项,如最大爬取页面数、允许的域名和输出格式。

Node
const crawlResponse = await app.asyncCrawlUrl('https://firecrawl.dev', {
  limit: 100,
  scrapeOptions: {
    formats: ['markdown', 'html'],
  }
});

if (!crawlResponse.success) {
  throw new Error(`Failed to crawl: ${crawlResponse.error}`)
}

console.log(crawlResponse)

检查爬取状态

要检查爬取作业的状态并处理错误,请使用 checkCrawlStatus 方法。它接受 ID 作为参数,并返回当前爬取作业的状态。

Node
Node;
const crawlResponse = await app.checkCrawlStatus('<crawl_id>');

if (!crawlResponse.success) {
  throw new Error(`Failed to check crawl status: ${crawlResponse.error}`);
}

console.log(crawlResponse);

取消爬取

要取消异步爬取作业,请使用 cancelCrawl 方法。它接受异步爬取作业的 ID 作为参数,并返回取消状态。

Node
const cancelCrawl = await app.cancelCrawl(id);
console.log(cancelCrawl);

映射网站

要映射网站并处理错误,请使用 mapUrl 方法。它接受起始 URL 作为参数,并返回映射的数据作为字典。

Node
const mapResult = await app.mapUrl('https://firecrawl.dev');

if (!mapResult.success) {
  throw new Error(`Failed to map: ${mapResult.error}`);
}

console.log(mapResult);

使用 WebSockets 爬取网站

要使用 WebSockets 爬取网站,请使用 crawlUrlAndWatch 方法。它接受起始 URL 和可选参数作为参数。params 参数允许您指定爬取作业的其他选项,如最大爬取页面数、允许的域名和输出格式。

Node
const watch = await app.crawlUrlAndWatch('mendable.ai', { excludePaths: ['blog/*'], limit: 5});

watch.addEventListener("document", doc => {
  console.log("DOC", doc.detail);
});

watch.addEventListener("error", err => {
  console.error("ERR", err.detail.error);
});

watch.addEventListener("done", state => {
  console.log("DONE", state.detail.status);
});

错误处理

SDK 处理由 Firecrawl API 返回的错误,并引发适当的异常。如果在请求过程中发生错误,将会引发带有描述性错误消息的异常。上面的示例展示了如何使用 try/catch 块处理这些错误。