メインコンテンツへスキップ

ドキュメントのロード

このガイドでは、Cheerio でドキュメントをロードする方法と、さまざまなロードメソッドをいつ使用するかについて見ていきます。

ヒント

jQuery に精通している場合、このステップは新しいものになるでしょう。 jQuery は、組み込みの DOM 上で動作します。 Cheerio では、HTML ドキュメントを渡す必要があります。

メソッドの可用性

loadBufferstringStreamdecodeStream、および fromURL メソッドは、ブラウザ環境では利用できません。代わりに、HTML 文字列を解析するには load メソッドを使用してください。

load

load メソッドは、Cheerio で HTML または XML ドキュメントを解析する最も基本的な方法です。ドキュメントを含む文字列を引数として受け取り、ドキュメントのトラバースと操作に使用できる Cheerio オブジェクトを返します。

load メソッドの使用例を次に示します。

import * as cheerio from 'cheerio';

const $ = cheerio.load('<h1>Hello, world!</h1>');

console.log($('h1').text());
// Output: Hello, world!
ヒント

Web ブラウザのコンテキストと同様に、load は、<html><head>、および <body> 要素がまだ存在しない場合に導入します。これを無効にするには、load の 3 番目の引数を false に設定できます。

const $ = cheerio.load('<ul id="fruits">...</ul>', null, false);

$.html();
//=> '<ul id="fruits">...</ul>'

load メソッドの詳細については、API ドキュメントを参照してください。

loadBuffer

loadBuffer メソッドは load メソッドに似ていますが、文字列の代わりにドキュメントを含むバッファを引数として受け取ります。 Cheerio は、HTML エンコードスニッフィングアルゴリズムを実行して、ドキュメントのエンコードを決定します。これは、ファイルから読み込んだり、ネットワーク接続を介して受信したりするなど、ドキュメントがバイナリ形式の場合に役立ちます。

loadBuffer メソッドの使用例を次に示します。

import * as cheerio from 'cheerio';
import * as fs from 'fs';

const buffer = fs.readFileSync('document.html');

const $ = cheerio.loadBuffer(buffer);

console.log($('title').text());
// Output: Hello, world!

loadBuffer メソッドの詳細については、API ドキュメントを参照してください。

stringStream

ストリームから HTML ドキュメントをロードし、エンコーディングがわかっている場合は、stringStream メソッドを使用して Cheerio オブジェクトに解析できます。

import * as cheerio from 'cheerio';
import * as fs from 'fs';

const writeStream = cheerio.stringStream({}, (err, $) => {
if (err) {
// Handle error
}

console.log($('title').text());
// Output: Hello, world!
});

fs.createReadStream('document.html', { encoding: 'utf8' }).pipe(writeStream);

stringStream メソッドの詳細については、API ドキュメントを参照してください。

decodeStream

ストリームから HTML ドキュメントをロードし、エンコードが不明な場合は、decodeStream メソッドを使用して Cheerio オブジェクトに解析できます。このメソッドは、HTML エンコードスニッフィングアルゴリズムを実行して、ドキュメントのエンコードを決定します。

decodeStream メソッドの使用例を次に示します。

import * as cheerio from 'cheerio';
import * as fs from 'fs';

const writeStream = cheerio.decodeStream({}, (err, $) => {
if (err) {
// Handle error
}

console.log($('title').text());
// Output: Hello, world!
});

fs.createReadStream('document.html').pipe(writeStream);

decodeStream メソッドの詳細については、API ドキュメントを参照してください。

fromURL

fromURL メソッドを使用すると、URL からドキュメントをロードできます。このメソッドは非同期であるため、結果の Cheerio オブジェクトにアクセスするには await(または then ブロック)を使用する必要があります。

import * as cheerio from 'cheerio';

const $ = await cheerio.fromURL('https://example.com');

fromURL メソッドの詳細については、API ドキュメントを参照してください。

結論

Cheerio は、HTML ドキュメントをロードし、DOM 構造に解析するためのいくつかのメソッドを提供します。これらのメソッドは、HTML データの種類とソースに応じて、さまざまなシナリオで役立ちます。ユーザーはこれらの各メソッドをよく読み、自分のニーズに最適なものを選択することをお勧めします。