Html Agility Packはまだ最高の.NET HTMLパーサーですか?

.net c# html html-agility-pack parsing

質問

Html Agility PackStackOverflowの質問への答えとして与えられましたが、それでもまだ最適な選択肢ですか?考慮すべき他の選択肢は何ですか?もっと軽量なものがありますか?

受け入れられた回答

比較のあるスプレッドシートがあります。

要約すれば:

CsQueryパフォーマンスとHtml Agility PackとFizzler CsQueryを私が知っている唯一の実用的な代替方法(Fizzler、HtmlAgilityPack拡張機能)と比較するためのパフォーマンステストをまとめました。私は3つの異なる文書に対してテストしました:

  • シズルテスト文書(約11 k)
  • 「チーズ」(約170 k)のためのウィキペディアエントリーは、
  • 単一ページのHTML 5仕様(約6メガバイト)

全体的な結果は次のとおりです。

  • HAPは、HTMLの文字列をオブジェクトモデルに読み込む方が高速です。 Fizzlerがインデックスを構築しているとは思わないので、これは理にかなっています(あるいは、比較的簡単なものだけを構築するかもしれません)。 CsQueryは、ドキュメントを読み込むのに1.1から2.6倍の時間がかかります。もっと詳しくはこちら。
  • CsQueryは他のほとんどのものに比べて高速です。時には10,000以上の要因によって。 1つの例外は「*」セレクタで、時にはFizzlerが高速である場合もあります。すべてのテストでは、結果は完全に列挙されます。この場合、ツリー内のすべてのノードが列挙されます。したがって、これはデータ構造と同じように選択エンジンをテストしません。
  • CsQueryはブラウザと同じ結果を返す上でより良い仕事をしました。ここの各セレクタは、jQuery 1.7.2を使用してChromeの同じドキュメントに対して検証され、その数値はCsQueryによって返されたものと一致します。これはおそらく、HtmlAgilityPackがオプションの(欠落している)タグを異なる方法で処理するためです。さらに、nth-childはFizzlerでは完全に実装されていません。単純な値(数式ではない)しかサポートしていません。

人気のある回答

HTML構文解析に関しては、実際のものとの比較はありません。これはvalidator.nuパーサーのC#ポートです 。これは、Geckoベースのブラウザ(Firefoxなど)で使用されるのと同じコードベースです。そこにレポはちょっと埃が多いようだが、だまされてはいけない。ポートは目立つ。それはちょうど見過ごされています。私は約1ヶ月前にCsQueryに統合しました。すべてのCsQueryテスト(C#に移植されたほとんどのjQueryとSizzleテストを含む)に合格します。

私は、C#で書かれた他のHTML5パーサー、あるいは欠落、オプション、無効なタグ処理という点で遠く離れたものも認識していません。これは単に偉大な仕事をするのではなく、標準に準拠しています。

上にリンクされたリポジトリは元のポートです。XMLノードツリーを生成する基本ラッパーを含みます。 CsQueryバージョン1.3以降では、このパーサを使用します。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ