有时如何使用 Xpath 从包含链接的表格单元格中提取数据?

Posted

技术标签:

【中文标题】有时如何使用 Xpath 从包含链接的表格单元格中提取数据?【英文标题】:Using Xpath how to extract data from table cells that contain links sometimes? 【发布时间】:2016-03-04 03:53:22 【问题描述】:

我有这个 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">Title</td><td><a href="http://gov.kz/premera/">Premier</a></td></tr>
    <tr><td class="name">Condition</td><td>Renovated</td></tr>
</tbody>
</table>

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

我正在尝试从第二个单元格中提取信息(它是:2011, 3, Premier, Renovated)

我使用这个 Xpath 表达式:

//table[@class="info"]//td[2]/text()

收到的输出(错误):

2011
3
Renovated

期望的输出:

2011
3
Premier
Renovated

如您所见,第三行中的第二个 &lt;td&gt; 而不仅仅是包含链接的文本,因此该行中的信息会丢失。因此,未收到所需的字符串“Premier”。 有时行中的单元格包含链接,有时它只是纯文本。有什么方法可以在这两种情况下从第二个单元格中提取数据(链接或仅给出文本)?

【问题讨论】:

【参考方案1】:

只需在text() 之前添加第二个正斜杠:

//table[@class="info"]//td[2]//text()

这将从您选择的 td 的所有子节点中获取文本节点

【讨论】:

以上是关于有时如何使用 Xpath 从包含链接的表格单元格中提取数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ruby中的电子表格gem从excel单元格中提取超链接地址?

使用 XPath 在使用 python 的 <td> 单元格中获取文本

Python - Win32Com - 如何从 Excel 电子表格单元格中提取超链接?

如何使用 PhpSpreadsheet 从表格单元格中检索日期?

如何使用打字稿在表格的单元格中动态插入锚标记?

如何使用 EPPLUS 从 Excel 电子表格单元格中获取值?