如何使用Xpath从表中提取具有连续单元格的所有行?

时间:2015-11-29 12:09:52

标签: html parsing xpath

我有一个html表:

<table class="info">
<tbody>
    <tr><td class="name">Year</td><td>2011</td></tr>
    <tr><td class="name">Storey</td><td>3</td></tr>
    <tr><td class="name">Area</td><td>170</td></tr>
    <tr><td class="name">Condition</td><td>Renovated</td></tr>
    <tr><td class="name">Bathroom</td><td>2</td></tr>
</tbody>
</table>

在此表中,数据的组织方式使每行包含<td>个标记中包含的2个单元格。第一个单元格包含有关数据类型的信例如房屋建造年份。第二个单元格包含年份信息,即2011年。

我希望以数据类型和信息被划分并相互对应的方式提取数据。我想以这种方式提取数据类型和信息:

Year - 2011
Storey - 3
Area - 170
Condition - Renovated
Bathroom - 2

目前我正在使用Xpath的连接函数 concat 。这是我的Xpath表达式:

concat(//table[@class="info"]//tr//td[contains(@class, 'name')]/text()  , ' - ', //table[@class="info"]//tr//td[not(contains(@class, 'name'))]/text())

此XPath返回此结果:

Year - 2011

我的表包含5行。我的Xpath表达式仅返回带有连接单元格的第一行。

但我发送给 concat 函数的2个Xpath表达式分别返回所有行的正常结果。

这是2个XPath表达式:

//table[@class="info"]//tr//td[contains(@class, 'name')]/text()

//table[@class="info"]//tr//td[not(contains(@class, 'name'))]/text()

这两个表达式都返回包含所需信息的所有行。当我将这两个表达式发送到 concat 函数时,它只返回第一行。

如何使用Xpath获取带连接单元格的所有行?我想只有使用Xpath是不可能的。我是否必须借助某些编程语言(例如PHP)或者可能是新版本的Xpath来完成它,或者在这种情况下某些复杂的表达式可以帮助我?

0 个答案:

没有答案