我正在尝试从我之前建立的页面的成员(member)详细信息页面获取一些数据。
但是,并非所有这些页面看起来都一样。它们基本上是在后台创建表,如果数据存在则添加表,如果不存在则不添加表。
此外,表格没有固定长度,如果某些字段不存在则可以更改。
这样的 tables body
看起来像这样:
<tbody><tr>
<td style="width: 115px; vertical-align: top;">
<img src="/Image/1231" alt="" style="width:100px;"><br>
Hamburg<br>
<br>
</td>
<td class="trenner_l" style="vertical-align: text-top;">
<table style="width: 100%;">
<tbody><tr>
<td colspan="4" class="trenner_u"></td>
</tr>
<tr style="height: 8px;">
<td style="vertical-align: middle;">
<img src="/Content/images/floasdfh_ain.png" title="memb" height="16">
</td>
<td style="vertical-align: top;">
vlg. minao
</td>
<td class="trenner_l">
<a href="/memb/DetailSmall/daTB_iframe=true&height=132&width=420" class="thickbox" >
Cate1</a> (21.03.1928)
</td>
<td class="trenner_l" style="vertical-align: top;">
UP, FORUM
</td>
</tr>
<tr style="height: 8px;">
<td style="vertical-align: middle;">
</td>
<td style="vertical-align: top;">
name. minao
</td>
<td class="trenner_l">
<a href="/Verband/DetailSmall/jhkg?TB_iframe=true&height=132&width=420" class="thickbox" >Zone
1</a>
</td>
<td class="trenner_l" style="vertical-align: top;">
Z1, CV
</td>
</tr>
<tr style="height: 8px;">
<td style="vertical-align: middle;">
</td>
<td style="vertical-align: top;">
vlg. meno
</td>
<td class="trenner_l">
<a href="/Verband/DetailSmall/asdfasd?TB_iframe=true&height=132&width=420" class="thickbox" >K.D.St.V.
Zone2</a>
</td>
<td class="trenner_l" style="vertical-align: top;">
Z1, Forum
</td>
</tr>
<tr>
<td colspan="4" class="trenner_o"></td>
</tr>
<tr>
<td colspan="2">
Mobiltelefon privat:
</td>
<td colspan="2" class="trenner_l">
<a href="tel:+22341123124">+22341123124</a>
</td>
</tr>
<tr>
<td colspan="4" class="trenner_o"></td>
</tr>
<tr>
<td colspan="2">email:
</td>
<td colspan="2" class="trenner_l">
<a href="mailto:test.test@gmail.de">test.test@gmail.de</a>
</td>
</tr>
<tr>
<td colspan="4" class="trenner_o"></td>
</tr>
<tr>
<td>
<img src="/Content/images/icons/map.png">
</td>
<td style="vertical-align: top;">
adress:
</td>
<td colspan="2" class="trenner_l" style="vertical-align: top;">
Teststreet 2, 243423 City, State
</td>
</tr>
</tbody></table>
<br>
<div class="TextSmall">online 12.04.2013</div>
</td>
</tr>
</tbody>
因为我只需要可用的数据
,所以我的想法是获取这样一个表中的所有字符串信息
。
我尝试了以下方法:
for (int j = 0; j < list.size(); j++) {
String link = list.get(i).getLinkToGVPage();
openSite(link);
//
List<WebElement> adresse = driver.findElements(By.xpath("//*[@id=\"ui-id-4\"]/table/tbody/tr/td"));
for (int k = 0; k < adresse.size(); k++) {
System.out.println(adresse.get(k).getText());
}
WebElement adresse = driver.findElement(By.xpath("//*[@id=\"ui-id-4\"]/table/tbody/tr[6]/td"));
System.out.println(adresse.getText());
} catch(Exception e) {
System.out.println("exceptions");
e.printStackTrace();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
但是,我什么也没得到。关于如何仅从表中获取字符串值的任何建议,以便我可以将它们保存在 string variable
中。
感谢您的回复!
最佳答案
我个人使用 Python 而不是 Java,但总体原则对我来说似乎是一样的:我会使用 if/elseif 结构分别检查每个字符串,然后将找到的字符串保存到一个变量中。
问题是,查看您的表格,这些字段似乎没有唯一标识符,这意味着很难正确识别它们。如果您能够调整生成页面的代码(或让某人为您执行此操作),我会给您希望能够检测其自己的类的每种类型的单元格。
关于java - 从表中将所有单元格值作为字符串抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31812768/