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

Cheerio の拡張

Cheerio にはすでにドキュメントを操作する多くの方法がありますが、独自機能を追加したい場合もあります。このガイドでは、カスタム CSS 擬似要素の追加と、Cheerio のプラグインの作成という 2 つの方法について説明します。

カスタム CSS 擬似クラスの追加

pseudos オプションは擬似クラスを追加するための拡張ポイントです。これは、名前から文字列または関数のマップへのマップです。

  • 文字列値は、選択される要素が一致する必要があるセレクターです。
  • 関数は、最初の引数として要素、2 番目の引数としてオプションのパラメーターを使用して呼び出されます。true を返した場合、要素が選択されます。

pseudos オプションを使用する例を次に示します。

const $ = cheerio.load('<div class="foo"></div><div data-bar="boo"></div>', {
pseudos: {
// `:foo` is an alias for `div.foo`
foo: 'div.foo',
// `:bar(val)` is equivalent to `[data-bar=val s]`
bar: (el, val) => el.attribs['data-bar'] === val,
},
});

$(':foo').length; // 1
$('div:bar(boo)').length; // 1
$('div:bar(baz)').length; // 0

Cheerio 用プラグインの記述

ドキュメントをロードしたら、カスタムプラグインメソッドでプロトタイプまたは同等の fn プロパティを拡張できます。例を次に示します。

const $ = cheerio.load('<html><body>Hello, <b>world</b>!</body></html>');
$.prototype.logHtml = function () {
console.log(this.html());
};

$('body').logHtml(); // logs "Hello, <b>world</b>!" to the console

TypeScript を使用している場合は、新しいメソッドに型定義を追加する必要があります。

declare module 'cheerio' {
interface Cheerio<T> {
logHtml(this: Cheerio<T>): void;
}
}