1

Web ページからすべてのリンク (アンカー テキスト、基になるハイパーリンク、ページ上のリンクの絶対位置を含む) を抽出できるように、優れたページ レンダリング ライブラリが必要です。

CSSBox ライブラリを使用していますが、レンダリングされたボックス モデルに href 属性がありません。つまり、アンカーテキストとリンクの位置は、CSSBox だけでしか取得できません。href 属性 (つまり、事実上の URL) を取得するには、アンカー テキストと別の HTML 解析ライブラリ (Jsoup など) を利用する必要があります。

私の目標をよりよく達成できるライブラリはありますか?

4

5 に答える 5

1

おすすめ

Geb の使用を検討してください:

のパワー、コンテンツ選択WebDriverの優雅さ、モデリングの堅牢性、および言語の表現力を 1 つにまとめます。jQueryPage ObjectGroovy

Spockスクリプティング、スクレイピング、および一般的な自動化に使用できます。また、 、JUnit&などのテスト フレームワークとの統合により、機能/Web/受け入れテスト ソリューションとしても同様に使用できますTestNG

要件

前述のように、これはGroovyを使用できる場合にのみ適しています。ただし、Groovy は Java と非常に簡単に統合できるため、通常、これは問題になりません。

さらに、これにはブラウザが必要です。これがあなたにとって契約違反になるかどうかはわかりません。

使用法

ドキュメントから:

ページ上のコンテンツのサイズと位置を取得できます。すべての単位はピクセルです。サイズは、height プロパティと width プロパティで取得できます。位置は、ページ (または親フレーム) の左上からコンテンツの左上点までの距離を表す x および y プロパティとして取得できます。

例えば:

Browser.drive {
  // Load the page
  go "http://myapp.com"

  // $("a") returns all hyperlinks on the page, similar to jQuery
  $("a").each { a ->
     // Display the required link properties and attributes
     println """
        The link to '${a.@href}' with text '${a.text()}' is at location (${a.x}, ${a.y}),
        with a height of ${a.height}px and a width of ${a.width}px.
     """
  }
}
于 2012-10-15T02:21:25.813 に答える
1

これは、CSSBoxを使用すると非常に簡単に行うことができます。各ElementBoxインスタンスにはgetElement()、対応する DOM 要素を取得する があります。つまりa、レンダリングされたリンクを表す要素ボックスがあれば、 を使用してターゲット URL を取得できますa.getElement().getAttribute("href")CSSBox ディスカッション フォーラムの関連トピックも参照してください。

于 2012-10-15T07:51:59.653 に答える
0

編集

パーサーが必要な場合は、HTML ページのすべてのリンクを表示し、必要なことを何でも実行できるようにするために、Jericho をお勧めします。

Jericho HTML パーサーは、認識されていない HTML または無効な HTML を逐語的に再現しながら、サーバー側のタグを含む HTML ドキュメントの一部の分析と操作を可能にする Java ライブラリです。また、高レベルの HTML フォーム操作関数も提供します。

簡単で小さく、まともなパフォーマンスを発揮します

于 2012-10-15T02:17:14.740 に答える
0

http://htmlunit.sourceforge.netをご覧ください。これはレンダラーではなく、GUI のないブラウザーです。さまざまな JavaScript エンジンや ActiveX もサポートしています。

ただし、実際にはWebページをレンダリングしないため、要素の位置を追跡するために使用できないと確信しています.

于 2012-10-15T02:22:08.213 に答える
0

JavaFX の WebEngine が役に立つかもしれません: http://docs.oracle.com/javafx/2/api/javafx/scene/web/WebEngine.html

使いやすいとか軽量とは言いませんが、見てください。

于 2012-10-15T03:06:42.370 に答える