Node.js上のHTMLパーサー[終了]


198

nodejsにRubyのnokogiriのようなものはありますか?ユーザーフレンドリーなHTMLパーサーを意味します。

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


3
「フレンドリー」とはどういう意味ですか?NokogiriのXPathおよびCSSセレクターのサポートのように、ノードを操作および選択するのに便利ですか?無効な「タグスープ」HTMLを解析できますか?
Phrogz

jQueryに慣れている場合は、この回答を検討してください
Lucio Paiva、2015

回答:


446

DOMを構築する場合は、jsdomを使用できます。

cheerioもあり、jQueryインターフェースを備えており、以前のバージョンのjsdomよりもはるかに高速ですが、最近のパフォーマンスは似ています。

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

parse5も良い解決策のように見えます。これはかなりアクティブで(このアップデートの時点での最後のコミットから11日)、WHATWGに準拠しており、jsdomAngularPolymerで使用されています。

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

スクレイピングしようとしているWebサイトが動的である場合は、phantomjsなどのヘッドレスブラウザを使用する必要があります。phantomjsを検討している場合は、casperjsもご覧ください。そして、あなたが持つノードからcasperjsを制御することができSpookyJS

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

ありますtoturial nettuts +後者の解決策については。


図1に示すように 2014年8月以来、YQLための要件であるYUIライブラリは、もはや積極的に維持されていないソースを


1
DomHandlerモジュール(htmlparser2にバンドルされています)を使用して、htmlparser2からDOMを取得できます。それらは、DOMを作成するオーバーヘッドなしに他の種類のHTMLを処理できるように意図的に分離されています。
esp、

@espありがとう、非標準のDOMだと思う前に、それに応じてそのセクションを変更しました。
Farid Nouri Neshat

YQLでクロールする方法がわからない-マークアップを処理せずにWebサービスの結果に参加するためのものです。
ダーデンフォール、2014

@dardenfallそうです、クロールは正しい用語ではありません。スクレイピングで変更しました:)
Farid Nouri Neshat

@Farid-(もしできればあなたにメッセージを送っただけでしょう)コメントで議論する危険があります(申し訳ありません!)それをスクレイピングにどのように使うかまだわかりません。これはサイトではなくWeb サービスで機能し、wservicesではHTMLを解析することはめったにありません。多分xmlですが、htmlではありません。
ダーデンフォール、2014


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.