xpath - 使用 XPath 捕获部分文本
问题描述
我在为以下 H 找到 XPath 时遇到了一些困难
<div>
<p> pppppppp
<span class="rollover-people">
<a class="rollover-people-link">pppppp</a>
<span class="rollover-people-block">
<span class="rollover-block">
<span>
<img src="/someAddress" width="100" height="100" alt>
<a>xxxx</a>
<a>xxxxx</a>
</span>
</span>
</span>
</span>pppppppp
</p>ppppppppp
<div>
所以基本上我需要里面的所有<p>
东西<span class="rollover-people-block">
。换句话说,我想要<p>
但不是<span class="rollover-people-block">
。这甚至可能吗?请记住,<p>
在页面中重复多次。
解决方案
这就是你正在寻找的东西。
//p//text()[not(ancestor::span[@class='rollover-people-block'])]
这将获得 p 下的所有文本节点,不包括 span class='rollover-people-block' 下的文本节点。
示例 html:
<!DOCTYPE html>
<html>
<body>
<div>
<p> A
<span class="rollover-people">
<a class="rollover-people-link">B</a>
<span class="rollover-people-block">
<span class="rollover-block">
<span>
<img src="/someAddress" width="100" height="100" alt>
<a>c</a>
<a>d</a>
</span>
</span>
</span>
</span>E
</p>f
<p> G
<span class="rollover-people">
<a class="rollover-people-link">H</a>
<span class="rollover-people-block">
<span class="rollover-block">
<span>
<img src="/someAddress" width="100" height="100" alt>
<a>i</a>
<a>j</a>
</span>
</span>
</span>
</span>K
</p>l
<div>
</body>
</html>
xpath 输出:
推荐阅读
- azure - 具有主机名绑定的 Web 应用程序上的 Azure 密钥保管库证书续订
- node.js - 无法重命名下载的文件
- ansible - 带条件的 Ansible 循环
- c# - 使用同一 DLL 的两个版本自动部署解决方案构建的管道
- php - FPDF 标题在 PDF 页面中看起来不同?
- python - 简化正则表达式模式
- reactjs - 如何使用带有 Typescript 的 Axios 将初始值设置为 Formik
- excel - Excel - 根据转置复制值
- json - mariadb json查询以获取特定子值的父键
- reactjs - 如何解决 TS 中的“对象可能为空”错误?