11.8k Star!强大的爬虫工具,让你轻松获取任意网站数据!

312 阅读3分钟

面对互联网上各种各样信息,网络爬取成为我们从海量信息中获取数据的重要手段。

然而,对于小白或非技术人员来说,使用爬虫工具常常让它们望而却步。

无独有偶,今天在 GitHub Treding 榜单上发现一款开源且强大的的 Web 爬虫工具:Firecrawl

项目介绍

Firecrawl:它能够从任意网站链接中爬取到网站的内容并将其转换为 Markdown 或结构化数据。

甚至能抓取到网站所有可访问的子页面,并为你提供每个页面的干净数据。无需站点地图。

图片

另外,还提供了易于使用且统一的 API,支持本地部署或在线使用,同时还支持与各种工具集成使用,如 Langchain、Dify、Flowise 等。

项目开源至今,已经获得了 11.8k Star 数,多次登榜 GitHub Treding 可以说是一款非常优秀的项目。

使用指南

方式一:在线体验

在其官网上可直接在线免费体验,提供了三种模式:

  • Single URL:仅抓取指定的 URL,而不抓取子页面。
  • Crawl:抓取 URL 及其所有可访问的子页面。
  • Map:在几秒钟内输出所有网站的网址。

图片

方式二:使用 API

FireCrawl 提供易于使用的 API,但需要先在 Firecrawl 官网上注册并获取 API 密钥。

自行托管后台服务提供了 API 和 Python、Node 的 SDK,以及和与现有一些 AI 工具集成,如 Langchain、Dify、Flowise、Llama Index 等

另外,也可以在本地运行,可在官网上查看详细部署指南。

使用方式

当获取到密钥之后,以使用 Node 为例,简单下如何使用。

  1. 安装依赖包;
npm install @mendable/firecrawl-js

2. 将 API 密钥设置为环境变量 FIRECRAWL_API_KEY; 3. 如果想爬取单个 URL,可使用 scrapeUrl方法;

try {
  const url = 'https://example.com';
  const scrapedData = await app.scrapeUrl(url);
  console.log(scrapedData);
} catch (error) {
  console.error(
    'Error occurred while scraping:',
    error.message
  );
}

4. 如果要爬取网站信息,可使用 crawlUrl 方法。该方法以 URL 起始和可选参数作为参数。 params参数允许你爬取人物的附加选项,例如最大爬取页面数、允许的域和输出格式。

const crawlUrl = "https://example.com";
const params = {
  crawlerOptions: {
    excludes: ["blog/"],
    includes: [], // leave empty for all pages
    limit: 1000,
  },
  pageOptions: {
    onlyMainContent: true,
  },
};
const waitUntilDone = true;
const timeout = 5;
const crawlResult = await app.crawlUrl(
  crawlUrl,
  params,
  waitUntilDone,
  timeout
);

5. 通过 checkCrawlStatus 方法检查爬取状态。

const status = await app.checkCrawlStatus(jobId);
console.log(status);

6. 通过 LLM 提取,轻松地从任何 URL 中提取结构化数据。

import FirecrawlApp from "@mendable/firecrawl-js";
import { z } from "zod";


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


// 定义要提取内容的模式
const schema = z.object({
  top: z
    .array(
      z.object({
        title: z.string(),
        points: z.number(),
        by: z.string(),
        commentsURL: z.string(),
      })
    )
    .length(5)
    .describe("Hacker News上的前5个故事"),
});


const scrapeResult = await app.scrapeUrl("https://news.ycombinator.com", {
  extractorOptions: { extractionSchema: schema },
});


console.log(scrapeResult.data["llm_extraction"]);

7. 通过 search 方法,在搜索引擎中搜索查询并获取顶级结果及每个结果的页面内容。

const query = 'what is mendable?';
const searchResults = await app.search(query, {
  pageOptions: {
    fetchPageContent: true // 获取每个搜索结果的页面内容
  }
});

写在最后

以上便是 Firecrawl 工具的详细介绍。

目前,项目一直在快速迭代更新很多实用的功能,逐步完善并稳定。

如果你需要为大语言模型训练、RAG 提供数据,相信这款爬虫工具,能大大显著提升你的效率。