我曾经有过这个表格;
<li>
<span>name:</span>
<p>Seca </p>
</li>
我使用这个 xpath 来获取 seca
:
ul/li/span[normalize-space(text())='name:']/following-sibling::p[1]/text())
一切都运行良好。
现在我没有p
标签。所以我只有这个:
<li>
<span>name:</span>
Seca
</li>
我应该对代码进行哪些编辑才能立即获取 seca
?
最佳答案
现在,“Seca”只是 li
元素的另一个子元素 - 因此是 span
元素的后续同级元素。使用
//ul/li/span[normalize-space(text())='name:']/following-sibling::text()
给你
[EMPTY LINE]
Seca
[EMPTY LINE]
您可能想要排除那些仅包含空格的行:
normalize-space(//ul/li/span[normalize-space(text())='name:']/following-sibling::text())
结果将是
Seca
如果您的实际输入包含更多文本节点,请不要忘记将 [1]
添加到表达式中。
请注意,如果实际上没有理由规范 span
的文本内容并仅考虑其直接子文本节点,则表达式可能会容易得多:
//ul/li[span='name:']/text()[2]
关于python - xpath当兄弟不是元素时如何获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401403/