JavaScript:
HTMLのパース
方法:
JavaScriptのDOMParser
APIを使用してHTMLを解析しましょう。
const parser = new DOMParser();
const htmlString = `<p>Hello, world!</p>`;
const doc = parser.parseFromString(htmlString, 'text/html');
console.log(doc.body.textContent); // 出力:Hello, world!
次に、クラスを持つような特定のものを取得しましょう:
const htmlString = `<div><p class="greeting">Hello, again!</p></div>`;
const doc = parser.parseFromString(htmlString, 'text/html');
const greeting = doc.querySelector('.greeting').textContent;
console.log(greeting); // 出力:Hello, again!
詳細解説
HTMLの解析はウェブが誕生した時からあります。当初はブラウザの仕事でした—ブラウザがHTMLを解析してウェブページを表示しました。時間が経つにつれ、プログラマーはこのプロセスを利用したいと思うようになり、DOMParser
のようなAPIが生まれました。
代替案は?もちろんあります。jQuery
やPythonのBeautifulSoup
のようなライブラリやツールがあります。しかし、JavaScriptのネイティブDOMParser
は速くて組み込まれているので、追加のライブラリは必要ありません。
実装面では、DOMParser
でHTMLを解析すると、Document
オブジェクトが作られます。これをあなたのHTMLの階層モデルと考えてください。それが手に入れば、通常のウェブページのDOMと同じようにナビゲートや操作が可能になります。
ここでのポイント—解析処理は不正なHTMLに引っかかることがあります。ブラウザは寛容ですが、DOMParser
はそうではないかもしれません。したがって、複雑なタスクや乱雑なHTMLに対しては、サードパーティのライブラリの方がより良いクリーンアップ作業を行うかもしれません。
参照
DOMParser
APIについてのMDNウェブドキュメント: MDN DOMParser- jQueryの解析機能: jQuery.parseHTML()
- サーバー用の高速で柔軟かつ軽量なjQueryのコア実装であるCheerio: Cheerio.js
- JS非対応の解析について:PythonのBeautifulSoupライブラリ: Beautiful Soup