← レシピへ戻る

ページデータを抽出して保存する

ページ内容を抽出し、ワークスペースストアに保存し、全文検索用にインデックス化します。

スクレイピングと抽出 初級 JavaScript scrape_and_store.js

前提条件

  • 開いている Guida ワークスペース

期待される結果

Guida が抽出したページレコードを 1 件ワークスペースストアに保存し、検索用にインデックス化します。

ソース例

scrape_and_store.js

このレシピは、ブラウザー移動、DOM 抽出、ワークスペース保存、全文検索インデックス化を組み合わせます。

// 抽出して保存 - データを取り出して保存する
//
// このスクリプトはページへ移動し、DOM クエリで構造化データを抽出し、
// 結果をワークスペースストアへ保存します。
// ブラウザー自動化、データ抽出、永続化を組み合わせます。
// 開いているワークスペースが必要です。
const targetUrl = "https://example.com";
const collection = "scraped-pages";
// ブラウザータブを用意する
await g.tabs.newBrowserTab();
g.log("移動中: " + targetUrl + "...");
await g.nav.navigateToUrl(targetUrl);
// ページからデータを抽出する
const title = await g.page.executeJS("document.title");
const heading = await g.dom.extractContent("h1");
const bodyText = await g.dom.extractContent("p");
// 構造化レコードを作る
const pageData = {
url: targetUrl,
title: title,
heading: heading,
excerpt: bodyText ? bodyText.substring(0, 200) : "",
scrapedAt: new Date().toISOString()
};
g.log("抽出しました: " + pageData.title);
// ワークスペースストアへ保存する
const key = targetUrl.replace(/[^a-zA-Z0-9]/g, "-");
g.store.put(collection, key, pageData);
g.log("ストアへ保存しました: " + collection + "/" + key);
// 全文検索用にインデックス化する
g.search.index({
_key: key,
_collection: collection,
title: pageData.title,
heading: pageData.heading,
excerpt: pageData.excerpt,
url: pageData.url
});
g.log("検索用にインデックス化しました");
// 確認: 検索で取り出す
const results = g.search.query("example");
if (results && results.length > 0) {
g.log("検索結果: " + results.length + "");
}