如何获取标签外的文本

时间:2016-05-05 06:37:02

标签: html xml xpath selenium-webdriver web-scraping

想要获取标签之外的文字。这是HTML:

{
   "executable":1
}

我想获得约会,<table border="0" cellpadding="0" cellspacing="0" width="100%" class="viewingsCommentsTbl"> <tbody> <tr> <td> <b style="border: 2px solid red; background: rgb(204, 136, 136);">Viewing Conducted: </b> 18-May-2016 </td> </tr> <tr> <td style=""><b style="">Duration: </b> 1 hr</td> </tr> <tr> <td style=""><b style="">Comments: </b>66yy</td> </tr> </tbody> </table>

我尝试过XPath,但它不起作用:

"18-May-2016"

3 个答案:

答案 0 :(得分:1)

文字位于<td>标记中,而不是<b>。尝试

//*[@class="viewingsCommentsTbl"]/tbody/tr[1]/td

答案 1 :(得分:0)

嗨,请尝试如下

WebElement dateis = driver.findElement(By.xpath("//*[@class='viewingsCommentsTbl']/tbody/tr/td"));
System.out.println("Date is : " + dateis.getText());

,输出结果为:日期为:观看进行中:2016年5月18日

//如果只想提取日期

String [] extractdate = dateis.getText().split(" ");
System.out.println("Extracted date is : " + extractdate[2]);

,输出结果为:提取日期为:2016年5月18日

答案 2 :(得分:0)

这是一种 更强大的 方式,可根据.table-row-cell:empty:odd, .table-row-cell:empty:even { -fx-background-color: transparent; } .table-row-cell:odd { -fx-background-color: red; } .table-row-cell:even { -fx-background-color: lightblue; } "18-May-2016"内的Viewing Conducted:标签选择td {1}}表 独立于     表格布局

viewingsCommentsTbl

通过选择元素的父元素的字符串值,然后使用normalize-space( substring-after(//table[@class='viewingsCommentsTbl'] //td[starts-with(.,'Viewing Conducted:')],'Viewing Conducted:')) 获取标签后面的文本,可以获取标签之外的文本(根据您的请求)。