我在使用 xpath 时遇到问题。我需要从类别中选择所有项目。类似于(伪语言):如果class != block-events-head且父属性data-category-sport="Basketball",则选择所有 div
这是 html 示例:
<div data-category-sport="Basketball" data-category-treeid="972911">
<div class="block-events-head">...</div>
<div id="event_1558960" data-event-treeid="1558960">...</div>
<div id="event_1559240" data-event-treeid="1559240">...</div>
<div id="event_1559560" data-event-treeid="1559560">...</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想:
.//div[@class!="block-events-head" and ../div[@data-category-sport='Basketball']]
Run Code Online (Sandbox Code Playgroud)
但它不起作用:(
.//div[@class!="block-events-head"]
Run Code Online (Sandbox Code Playgroud)
可行,但如何添加“按父级过滤器”?
请帮我解决一下..
问候!
XPath 表达式的问题在于,第二项../div[@data-category-sport='Basketball']
对于第一项适用的节点的所有兄弟节点也成立@class!="block-events-head"
。您想要的是检查条件的两个部分是否具有相同的父子关系。这实际上很容易实现。只需将父级的检查移至层次结构的更高级别即可
.//div[@data-category-sport='Basketball']/div[@class!="block-events-head"]
Run Code Online (Sandbox Code Playgroud)
看看这是否适合你。