201

私は自分の仕事で多くの HTML 解析を行っています。これまでは、解析とブラウザーの自動化に HtmlUnit ヘッドレス ブラウザーを使用していました。

ここで、両方のタスクを分離したいと思います。

HtmlUnit では最初にページをロードし、次にソースを取得して解析するのに時間がかかるため、軽い HTML パーサーを使用したいと考えています。

どの HTML パーサーが HTML を効率的に解析できるか知りたいです。私は欲しい

  1. スピード
  2. 「id」、「name」、または「tag type」によって HtmlElement を簡単に見つけることができます。

汚れた HTML コードをきれいにしなくても、私にとっては問題ありません。HTML ソースをきれいにする必要はありません。HtmlElements 間を移動し、そこからデータを収集する最も簡単な方法が必要なだけです。

4

3 に答える 3

419

自己プラグ: 新しい Java HTML パーサーjsoupをリリースしました。私はそれがあなたが求めていることをすると思うので、ここで言及します.

そのパーティーのトリックは、要素を見つけるための CSS セレクター構文です。

String html = "<html><head><title>First parse</title></head>"
  + "<body><p>Parsed HTML into a doc.</p></body></html>";
Document doc = Jsoup.parse(html);
Elements links = doc.select("a");
Element head = doc.select("head").first();

詳細については、セレクタのjavadoc を参照してください。

これは新しいプロジェクトなので、改善のアイデアは大歓迎です!

于 2010-01-31T07:41:16.170 に答える
32

私がこれまでに見た中で最高のものはHtmlCleanerです:

HtmlCleaner は、Java で書かれたオープンソースの HTML パーサーです。Web で見られる HTML は通常、汚れていて、形式が正しくなく、さらに処理するのに適していません。このようなドキュメントを大量に使用する場合は、まず混乱を解消し、タグ、属性、および通常のテキストに順序を付ける必要があります。指定された HTML ドキュメントについて、HtmlCleaner は個々の要素を並べ替え、整形式の XML を生成します。デフォルトでは、ドキュメント オブジェクト モデルを作成するためにほとんどの Web ブラウザが使用するのと同様の規則に従います。ただし、ユーザーは、タグのフィルタリングとバランシングのためにカスタム タグとルール セットを提供できます。

HtmlCleaner を使用すると、XPath を使用して任意の要素を見つけることができます。

他の html パーサーについては、この SO questionを参照してください。

于 2010-01-30T16:53:33.687 に答える
9

HTML5 解析アルゴリズムに基づくValidator.nu のパーサーをお勧めします。2010-05-03 から Mozilla で使用されているパーサーです

于 2010-01-30T17:32:36.993 に答える