面对互联网上各种各样信息,网络爬取成为我们从海量信息中获取数据的重要手段。
然而,对于小白或非技术人员来说,使用爬虫工具常常让它们望而却步。
无独有偶,今天在 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 为例,简单下如何使用。
- 安装依赖包;
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 提供数据,相信这款爬虫工具,能大大显著提升你的效率。