-2

テーブルの数が不明なWebページで反復するすべてのテーブルにアクセスしたいと思います。私はこのコードを書きました

import java.io.*; 
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlTable;
import com.gargoylesoftware.htmlunit.html.HtmlTableRow;
import com.gargoylesoftware.htmlunit.html.*;
import com.gargoylesoftware.htmlunit.WebClient;


public class test {

public static void main(String[] args) throws Exception {

            WebClient client = new WebClient();
            HtmlPage currentPage = client.getPage("http://www.mysite.com");
            client.waitForBackgroundJavaScript(10000);
            FileWriter fstream = new FileWriter("index.txt");
        BufferedWriter out = new BufferedWriter(fstream);

        for (int i=0;i<2;i++){
         final HtmlTable table =(HtmlTable)    currentPage.getByXPath("//table").get(i);
         for (final HtmlTableRow row : table.getRows()) {
                for (final HtmlTableCell cell : row.getCells()) {
                out.write(cell.asText()+',');
                }
         out.write('\n');
    }
}

out.close();
    client.closeAllWindows();

}
}

私は条件をチェックしてみました:

  while(currentPage.getByXPath("//table")){....}

しかし、受け入れられません。正しいチェック条件は何ですか?

4

2 に答える 2

3

htmlunit.html.HtmlPageにはメソッドgetElementsByTagName(String tagName)があります

ここで、「テーブル」のtagNameを渡すことができます。次に、大まかな擬似コードで、返される数の長さを取得します。

var x = getElementsByTagName("table");
var nTables = x.length
于 2012-04-12T09:15:14.053 に答える
-1

まず、HTMLテーブル行のリストを取得します。次に、HTMLTable列のリストを取得し、forループを使用してテーブルを反復処理し、必要な条件を確認します。

List<HtmlTableRow> tableRows = table.getRows();

必要に応じて変更できる場合はテーブルヘッダーを確認したいので、行0を取得します

List<HtmlTableCell> tableColumns = table.getRow(0).getCells();

for (int row = 0; row < tableRows.size(); row++)
{
    for (int column = 0; column < tableColumns.size(); column++)
    {
        if (tableColumns.get(column).asText().equalsIgnoreCase("check your condition"))
        {
            // do what you want 
        } 
    }
}
于 2016-12-19T10:35:37.403 に答える