【发布时间】:2019-03-12 21:21:41
【问题描述】:
我正在尝试编写一个 xpath 来获取以下标签的内部文本值,理想情况下我想使用 OR 语句,以便我可以让一个 xpath 选择文本:Pay 或 付费 在这两种情况下。
案例一
<td>
<a class="btn btn-success">Pay</a>
<div class="display:none"></div>
<div class="display:none"></div>
<div class="display:none"></div>
<div class="display:none"></div>
<div class="display:none"></div>
</td>
案例2
<td>
<div class="display:none"></div>
<div class="display:none"></div>
<div class="display:none"></div>
<div class="display:none"></div>
Paid
<div class="display:none"></div>
</td>
我现在尝试采用的方法是首先尝试让 xpath 忽略所有 <div class="display:none"></div>,因为 xpath
//td/text() 最终会拾取所有空的 div 标签。
我正在尝试这些方法来避免出现空标签:
//td::child[@text='Pay' OR @text='Paid']
//td/text()
//td::child[not(@class="display:none")]
这些 xpath 最终会被用来使用cheerio.js 提取数据,另一种我还没有研究过的方法是尝试迭代来自//td/text() 的结果
以前有人遇到过这种问题吗?
【问题讨论】:
-
不清楚是要选择某个节点(元素或文本节点)还是只是获取某个字符串值。
-
澄清我需要专门获取文本节点。我使用cheerio.js 来解析html 并提取文本值,而不是html 标记。