0

我在 java 中使用 HtmlUnit。在我的页面中,我有很多表,但 4 个表具有相同的名称和相同的属性。我想分别处理这 4 个表。我怎样才能得到这四张桌子中的第二张桌子和第三张桌子?

4

2 回答 2

0

使用getElementsByName()getElementsByXpath()。这两个函数都返回一个 HtmlElements 列表,但在 XPath 上,您可以过滤以仅获取指定的表。

final WebClient web = new WebClient();
final Page page = web.getPage("...");
List<?> tables = page.getElementsByName("repetitive_table_name");
HtmlElement secondTable = (HtmlElement) tables.get(1);
HtmlElement thirdTable = (HtmlElement) tables.get(2);

或者

final WebClient web = new WebClient();
final Page page = web.getPage("...");
// This will return like the getElementsByName
List<?> tables = page.getElementsByXpath("//table[@id='repetitive_table_name']");
HtmlElement secondTable = (HtmlElement) tables.get(1);
HtmlElement thirdTable = (HtmlElement) tables.get(2);
于 2013-06-23T18:05:38.490 回答
0

您有一种方法可以传递页面中的所有对象,只需传递要选择的元素(在这种情况下为“表”),以获取一个数组 x 中的所有表。

var x = getElementsByTagName("table");
var nTables = x.length

现在很容易数组 x 的第一个元素是第一个表,依此类推。

结论:对于对象,无需知道名称、ID... 即可访问任何页面上的每个对象,只需获取您需要的所有元素并为实例变量加注星标并进行比较即可。

非常好:)

于 2013-06-23T16:48:18.663 回答