← 레시피로 돌아가기

페이지 데이터를 추출하고 저장하기

페이지 내용을 추출하고 워크스페이스 저장소에 저장한 뒤 전체 텍스트 검색용으로 인덱싱합니다.

스크래핑과 추출 초급 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 + "");
}