Perl で JavaScript / jQuery 風に HTML DOM を操作する


既存のHTMLファイルをちょっとだけ書き換るために、Perl で JavaScript または jQuery 風セレクタで(=正規表現でいちいち探さないで) DOM を操作する事ってできるのかな?と思って調査した結果。モジュール候補をリストアップしただけの未テスト。

jQuery ライクに DOMを抽出、操作できる Mojo::DOM

書き換えもできるけれど他の部分には手をつけない(と書いてある)。
https://metacpan.org/pod/Mojo::DOM

ネイティブ JavaScript ライクに DOMを抽出、操作できる HTML::DOM

書き換え(オブジェクト変更後に書き出し)もできるけど、結果がどうなるか未テスト。
改行つぶされたりするとそれはそれでやりにくいからね。ドキュメントをざっと見て普通に考えるとあまり期待できない。
https://metacpan.org/pod/HTML::DOM

Perl で HTML をパースする(参考にした情報)

調査にあたり、下記のページの情報が役に立ちました。

Parsing HTML with Perl – O’Reilly Radar

以下は、このページ内で紹介されている関連情報。

タグ、その中の情報を抽出したいなら以下が便利。
https://metacpan.org/pod/HTML::TokeParser::Simple
https://metacpan.org/pod/HTML::TableExtract

XPath でノードを抽出する
https://metacpan.org/pod/HTML::TreeBuilder::XPath

Parse でエラーが出るなら前処理に役に立つかも
https://metacpan.org/pod/HTML::Tidy

HTMLがXML形式なら(ストリーム型パーサーだけど XPath も使える)
(荒野で拾ってきたXHTMLには多分使えない。)
https://metacpan.org/pod/XML::Twig