【煽り運転に注意】ウェブサイトをLLM対応データに変換する「Firecrawl」の活用術
mendableai/firecrawlは、ウェブサイト全体をLLM(大規模言語モデル)が扱いやすい形式に変換してくれる、とても便利なツールです。
ウェブサイトの情報をLLMに学習させたり、リアルタイムで情報を取得して応答に組み込んだりしたい場合、通常は手動でデータを整形したり、複雑なスクレイピングコードを書く必要があります。しかし、Firecrawlを使うと、URLを指定するだけで、必要なデータを簡単に取得・加工できるんです。
Firecrawlは、開発現場でさまざまな形で役立ちます。
データ収集の効率化
複数のウェブサイトから情報を集める必要がある場合、Firecrawlを使えば、スクレイピングコードをゼロから書く手間が省けます。特に、ウェブサイトの構造が変わっても影響を受けにくいのが大きな利点です。
LLMアプリケーション開発の迅速化
独自のLLMアプリケーションを開発する際、ドキュメントサイトやFAQページ、ブログ記事などをそのまま学習データとして活用できます。これにより、データの準備にかかる時間を大幅に短縮できます。
RAG(Retrieval-Augmented Generation)の実装
外部の最新情報をLLMの応答に組み込むRAGシステムを構築する際に、Firecrawlはリアルタイムで最新のデータを取得する役割を担います。これにより、LLMの知識を常に最新の状態に保つことができます。
構造化データの抽出
ウェブサイトから特定の情報を抜き出してデータベースに保存したい場合、FirecrawlはJSON形式で構造化されたデータを提供してくれます。これにより、データのパース(解析)処理が非常に楽になります。
Firecrawlは、主にAPIとして提供されています。そのため、PythonやJavaScriptなど、HTTPリクエストを送ることができるプログラミング言語なら何でも利用できます。
まずは、Firecrawlのウェブサイトでアカウントを作成し、APIキーを取得しましょう。このキーが、APIを利用するための認証情報となります。
APIキーを取得したら、次はコードを書きます。
import requests
import json
# あなたのFirecrawl APIキーを設定してください
FIRECAW_API_KEY = "YOUR_API_KEY"
# リクエストヘッダー
headers = {
"Authorization": f"Bearer {FIRECAW_API_KEY}",
"Content-Type": "application/json",
}
# リクエストボディ
# 変換したいウェブサイトのURLを指定
data = {
"url": "https://ja.wikipedia.org/wiki/Python",
# 変換形式を指定 (markdown, html, text, jsonなど)
"extractorOptions": {
"mode": "markdown"
}
}
# APIエンドポイント
api_endpoint = "https://api.firecrawl.dev/v1/scrape"
try:
# APIリクエストを送信
response = requests.post(api_endpoint, headers=headers, data=json.dumps(data))
response.raise_for_status() # HTTPエラーが発生した場合に例外を発生させる
# レスポンスからデータを取得
result = response.json()
markdown_content = result["data"]["markdown"]
print("--- 取得したMarkdownコンテンツ ---")
print(markdown_content[:500]) # 最初の500文字だけ表示
except requests.exceptions.RequestException as e:
print(f"エラーが発生しました: {e}")
const axios = require('axios');
// あなたのFirecrawl APIキーを設定してください
const FIRECAW_API_KEY = "YOUR_API_KEY";
const urlToScrape = "https://ja.wikipedia.org/wiki/JavaScript";
// リクエストヘッダー
const headers = {
"Authorization": `Bearer ${FIRECAW_API_KEY}`,
"Content-Type": "application/json",
};
// リクエストボディ
const data = {
url: urlToScrape,
extractorOptions: {
mode: "json", // JSON形式で取得
},
};
const apiEndpoint = "https://api.firecrawl.dev/v1/scrape";
async function scrapeWebsite() {
try {
const response = await axios.post(apiEndpoint, data, { headers });
const result = response.data;
const structuredData = result.data.json;
console.log("--- 取得したJSONデータ ---");
console.log(structuredData);
} catch (error) {
console.error("エラーが発生しました:", error.response ? error.response.data : error.message);
}
}
scrapeWebsite();
これらのコード例は、scrapeエンドポイントを使って単一のウェブページをスクレイピングする方法を示しています。複数のページをクロールしたい場合は、crawlエンドポイントを使用します。