0

私はJavaの経験がまったくないので、少し迷っています。Selenium を使用して、ページの html をダウンロードし、文字列に格納します。ここで、その間のすべてのデータを取得して、これを配列に入れたいと思います。したがって、jqueryスタイルでは、次のようになります。

$('div[align="center"]').each(function(){
 array[] = $(this).text();
});

違いは、文字列から取り出して Java で実行する必要があることです。私はJavaの経験がないので、最も簡単な方法を探しています。

ご協力いただきありがとうございます!

4

3 に答える 3

1

HTML 全体を Selenium で取得する代わりに (そのためのより軽量なツールがあります。Get html file Javaを参照してください)、Selenium で適切な要素を選択できます。

Selenium RC を使用している場合:

// assuming 'selenium' is a healthy Selenium instance
String divText = selenium.getText("css=div[align='center']");

または、Selenium 2 (WebDriver) を使用している場合:

// assuming 'driver' is a healthy WebDriver instance
String divText = driver.findElement(By.cssSelector("div[align='center']")).getText();

実際にはさらに多くの<div align="center">要素がある場合は、それらすべてを取得できます。

List<WebElement> divList = driver.findElements(By.cssSelector("div[align='center']"));
// and use every single one
for (WebElement elem : divList) {
    System.out.print(elem.getText());
}

Selenium JavaDocs特に、 WebDriverWebElementを見たいと思っています。

そして、例の Selenium ドキュメント。それを読んで。

于 2012-05-09T17:32:45.443 に答える
0

セレンでは、ソースページをダウンロードする代わりに、セレンを使用して、テキストを取得する場所から html 要素を取得します。 ..selenium.getText(locator_of_element) のようなもの。要素のリストの場合は、ロケーターの前でインデックスを使用してループできます。//div[0]、//div[i] など

それが役に立てば幸い..

于 2012-05-09T17:32:17.377 に答える
0

この質問を読むことをお勧めします:

Java を使用して、正規表現を使用してより大きな文字列の部分文字列を検索する

ここでの唯一の問題は、構築する必要がある正規表現ですが、これは Java の問題ではありません。

改行と Pattern.DOTALL フラグの使用に関するコメントを読んでください。

編集: ルチアーノが述べたように、html を読むためのより良い方法を探します。複数のStringものが含まれている可能性があり<div align="center">、そもそも必要なものしか得られない可能性があります。

編集:

このコードはうまくいくようです:

String html = "<div align=\"center\">text</div>";

Pattern MY_PATTERN = Pattern.compile("<div align=\"center\">(.*?)</div>");

Matcher m = MY_PATTERN.matcher(html);
while (m.find()) {
    String s = m.group(1);
    System.out.println(s);
}
于 2012-05-09T15:33:56.370 に答える