html - 段落后的列表项内跨度的 XPath
问题描述
我有以下文档:
<html>
<head>
<title>Page</title>
</head>
<body>
<div>
<div>
<div>
</div>
<div class="this one">
<p><span><strong>Ignore</strong></span></p>
<p>Text</p>
<p><span><strong>Header 1</strong></span></p>
<ul><li><span style="color: #000;">List Value 1</span></li></ul>
<p><span><strong>Header 2</strong></span></p>
<ul><li><span style="color: #000;">List Value 2</span></li></ul>
<p><span><strong>Ignore</strong></span></p>
<ul><li><span style="color: #000;">List Value 3</span></li></ul>
<p><span><strong>Header 3</strong></span></p>
<ul>
<li><span style="color: #000;">List Value A</span></li>
<li><span style="color: #000;">List Value B</span></li>
<li><span style="color: #000;">List Value C</span></li>
</ul>
<p><span><strong>Ignore</strong></span></p>
<p>Text</p>
</div>
</div>
</div>
</body>
</html>
我正在尝试获取下的所有列表值Header 3
;但是,XPath 在之后找不到匹配项<p>
这有效:
//div[@class='this one']/p/span/strong[text() = 'Header 3']
这不会:
//div[@class='this one']/p/span/strong[text() = 'Header 3']/following-sibling::ul[1]/li/span
解决方案
问题是strong
没有任何ul
后续兄弟姐妹。
改变
//div[@class='this one']/p/span/strong[text() = 'Header 3']/following-sibling::ul[1]/li/span
到
//div[@class='this one']/p[span='Header 3']/following-sibling::ul[1]/li/span
因为p
确实有ul
以下兄弟姐妹。然后你会选择
<span style="color: #000;">List Value A</span>
<span style="color: #000;">List Value B</span>
<span style="color: #000;">List Value C</span>
按照要求。
推荐阅读
- system-verilog - 为什么我不能在 SystemVerilog 模块中从包中导入 let 定义?
- r - 在R中将字符串从一列提取到另一列
- kubernetes - 如何解决 Kubernetes 部署警告?
- sql - 根据字符串结尾的正则表达式过滤数据集
- django - Django 应用程序中的单元测试日志格式和自定义字段
- javascript - 自动循环浏览 GeoMap 中的工具提示
- salesforce - SalesForce DataLoader CLI 无法加载 JDBC 驱动程序
- video - 使用 gstreamer 通过树莓派流式传输 RTSP。无法输出音频
- opencv - OpenCV 网格板姿态检测不正确
- apache-flink - 使用 Python 的 Apache Beam ReadFromKafka 在 Flink 中运行,但没有发布的消息通过