#navi_header|Java| 2015-03現在の、Javaで利用できるHTMLパーサライブラリってどんなのがあるか探してみた、調査メモ。参考URL集。 Javaで利用できるHTMLパーサライブラリの一覧、一番の参考URL集: - Open Source HTML Parsers in Java -- http://java-source.net/open-source/html-parsers -- 去年くらいにもチェックしてみたが、今回チェックしてみたらうろ覚えだけどいくつか追加されてる気もする・・・。 -- とりあえずぼちぼち新し目のも載ってるようなので、まずはこれが参考? 先に結論を書くと、今回は以下の要件に適してそうなパーサを探してみたのだが、唯一イケそうなTagSoupが2011年頃?のv1.2.1で止まってて、しょんぼりした。 - 汚い、壊れたHTMLでもパースできること。閉じタグが無いのは可愛い方で、そもそも "<" が一文字欠けてしまったりとか、そんなレベル。 - SAX APIサポート。DOMを構築しない、メモリに優しいパーサ 特性としてどうしても個人が開発してOSSとしてリリースしてるものが多い・・・というかむしろ、それしかないっぽいので、開発者個人の事情によって開発が止まる可能性が高い。 事実として、今回の要件に適合しそうなライブラリのうち、ソースコードリポジトリへのコミットが2014年以降も確認できているものはHtmlCleanerとjsoupの2つしかない。 他人が開発したHTMLパーサを利用するということはその開発者に依存することになる。 ライブラリの開発動向を定期的にチェックし、いつか乗り換える時がくる、というのをリスクとして検討しておく必要がある。 ・・・と、思いました。 ---- 以下、本文です。 Stack Overflow でも、いくつか「良いJavaのHTMLパーサ教えて!」という質問が立ってる。 - java - TagSoup vs. Jsoup vs. HTML Parser vs. HotSax vs - Stack Overflow -- http://stackoverflow.com/questions/5183748/tagsoup-vs-jsoup-vs-html-parser-vs-hotsax-vs -- 2011年頃に上がったが、QAにふさわしくないとしてcloseされた。 - java - Which HTML Parser is the best? - Stack Overflow -- http://stackoverflow.com/questions/2168610/which-html-parser-is-the-best -- 2010年に始まって、2014年ぐらいまでぽつりぽつりコメントが寄せられた - HTML/XML Parser for Java - Stack Overflow -- http://stackoverflow.com/questions/2129375/html-xml-parser-for-java -- 2010年に盛り上がった。 いくつか調べてみた: - HtmlCleaner Project Home Page -- http://htmlcleaner.sourceforge.net/ -- 汚いHTMLをwell formedなXMLに変換するライブラリ。その過程で、HTMLのパースもできるらしい。 -- BSDライセンス -- ぼちぼち開発継続してる。 - jsoup Java HTML Parser, with best of DOM, CSS, and jquery -- http://jsoup.org/ -- https://github.com/jhy/jsoup/ -- HTML5にも対応した、汚いHTMLでも頑張れるパーサ。 -- 一旦DOM構造に全部変換して、JavaScriptやjQueryに類似したAPIで要素を取得できる。 -- MITライセンス -- ぼちぼち開発継続してる。 - The Validator.nu HTML Parser -- https://about.validator.nu/htmlparser/ -- JavaでのHTMLパース処理の実装。SAX/DOMの両方のパーサAPIに対応。 --- 参考 : https://html.spec.whatwg.org/multipage/syntax.html#parsing -- ライセンスは独自? -- 2012年以降は新しいリリースは無い? - TagSoup home page -- http://mercury.ccil.org/~cowan/XML/tagsoup/ -- 汚いHTMLをSAX型APIでパースできる。DOM構築はしない。 -- ライセンスはAPL2 -- ソースは公開されてるものの、GitHubやSFなどの公開リポジトリには無い。ソースのアーカイブがあるだけ。 -- 2011年のXML文字エンティティに対応した v1.2.1 が最後のリリースで、以降の動きは不明。 - ShaniXmlParser | SourceForge.net -- http://sourceforge.net/projects/shanidom/ -- 2009年頃で開発が止まってる。 - Mozilla Java Html Parser -- http://mozillaparser.sourceforge.net/ -- DOM構築タイプのパーサ -- 2008年以降、新しいリリースは無い。 -- ライセンスはMPL v1.1 - HTML Parser - HTML Parser -- http://htmlparser.sourceforge.net/ -- JavaでのHTMLパーサ兼コンバータ -- Common Public License -- 2006年9月以降、新しいリリースは無い。 - HotSAX Project Home -- http://hotsax.sourceforge.net/ -- SAX型のHTML/XML/XHTMLパーサ -- LGPLv2 -- 2002年以降、動きが無い。 #navi_footer|Java|