ドキュメントのロード
このガイドでは、Cheerio でドキュメントをロードする方法と、さまざまなロードメソッドをいつ使用するかについて見ていきます。
jQuery に精通している場合、このステップは新しいものになるでしょう。 jQuery は、組み込みの DOM 上で動作します。 Cheerio では、HTML ドキュメントを渡す必要があります。
loadBuffer
、stringStream
、decodeStream
、および 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 データの種類とソースに応じて、さまざまなシナリオで役立ちます。ユーザーはこれらの各メソッドをよく読み、自分のニーズに最適なものを選択することをお勧めします。