web-dev-qa-db-ja.com

Node.jsのHTMLパーサー

NodejsにRubyの nokogiri のようなものはありますか?つまり、ユーザーフレンドリーなHTMLパーサーです。

Node.jsモジュールのページでいくつかのパーサーを見ましたが、きれいで新鮮なものを見つけることができません。

184
asci

DOM をビルドする場合は、 jsdom を使用できます。

cheerio もあり、 jQuery インターフェースを持ち、jsdomの古いバージョンよりもずっと高速ですが、最近ではパフォーマンスが似ています。

ストリーミングパーサーである htmlparser2 をご覧になることをお勧めします。そのベンチマークによると、他よりも高速で、デフォルトではDOMはありません。また、DOMを作成するハンドラーにバンドルされているため、DOMを生成することもできます。これは、cheerioが使用するパーサーです。

parse5 も良い解決策のようです。かなりアクティブ(この更新時点での最後のコミットから11日間)で、WHATWGに準拠し、 jsdomAngular 、および Polymer で使用されます=。

webスクレイピング のHTMLを解析する場合は、 YQL を使用できます。 ノードモジュール があります。 YQLは、HTMLが static Webサイトからのものである場合に最適なソリューションになると思います。これは、独自のコードや処理能力ではなく、サービスに依存しているためです。 Webサイトのrobot.txtでページが許可されていない場合は機能しませんが、YQLは機能しません。

スクレイピングしようとしているWebサイトが dynamic である場合、 phantomjs のような headless browser を使用する必要があります。 phantomjsを検討している場合は、 casperjs もご覧ください。そして、 SpookyJS を使用してノードからcasperjsを制御できます。

Phantomjsの横に zombiejs があります。 nodejsに埋め込むことができないphantomjsとは異なり、zombiejsは単なるノードモジュールです。

後者のソリューションには nettuts + toturial があります。

427

https://github.com/tmpvar/jsdom を試してください-HTMLをいくつか与えると、DOMが得られます。

12
thejh

また、X線を見ることができます: https://github.com/lapwinglabs/x-ray

6
png