在Java中使用XPath和Selenium解析HTML表数据

我想获取数据并在没有标签的情况下进行整理。看起来像这样

<table class="SpecTable">

<col width="40%" />

<col width="60%" />

<tr>

<td class="LightRowHead">Optical Zoom:</td>

<td class="LightRow">15x</td>

</tr>

<tr>

<td class="DarkRowHead">Digital Zoom:</td>

<td class="DarkRow">6x</td>

</tr>

<tr>

<td class="LightRowHead">Battery Type:</td>

<td class="LightRow">Alkaline</td>

</tr>

<tr>

<td class="DarkRowHead">Resolution Megapixels:</td>

<td class="DarkRow">14 MP</td>

</tr>

</table>

并且我希望能够提取所有信息字符串,以便可以使用以下方式将其存储在纯文本文件中:

光学变焦:15倍数码变焦:6倍电池类型:碱性分辨率百万像素:14 MP

public static void main(String[] args) {

FirefoxProfile profile = new FirefoxProfile();

profile.setPreference("general.useragent.override", "some UA string");

WebDriver driver = new FirefoxDriver(profile);

String Url = "http://www.walmart.com/ip/Generic-14-MP-X400-BK/19863348";

driver.get(Url);

List<WebElement> resultsDiv = driver.findElements(By.xpath("//table[contains (@class,'SpecTable')//td"));

System.out.println(resultsDiv.size());

for (int i=0; i<resultsDiv.size(); i++) {

System.out.println(i+1 + ". " + resultsDiv.get(i).getText());

}

我使用Selenium在Java中进行编程,因此无法为其找到正确的XPath表达式。

有人可以找出我为什么会犯错误的原因,并可能给我一些如何正确解析此数据的指示吗?我对Selenium和XPath很陌生,但我需要这项工作。

另外,如果有人能为我提供快速学习Selenium和XPath的良好资源,也将不胜感激!

回答:

可能这将满足您的需求:

string text = driver.findElement(By.cssSelector("table.SpecTable")).getText();

字符串text将包含表中所有带有SpecTable类的文本节点。我更喜欢使用css,因为它受IE支持并且比xpath更快。但是对于xpath教程,请尝试this和this。

以上是 在Java中使用XPath和Selenium解析HTML表数据 的全部内容, 来源链接: utcz.com/qa/424459.html

回到顶部