当前位置: 代码迷 >> python >> lxml XPATH提供所有元素,而不仅仅是当前节点下的元素
  详细解决方案

lxml XPATH提供所有元素,而不仅仅是当前节点下的元素

热度:107   发布时间:2023-06-13 15:29:23.0

的HTML是这样的:

<body>
<div class="div_a">
  <ul class="ul">
    <li>li</li>
    <li>li</li>
  </ul>
</div>
<div class="div_b">
  <a>link</a>
  <ul>
    <li>div_b li</li>
  </ul>
</div>
</body>

尝试得到div_a的li

node = page.xpath("//div[@class='div_a']")  
li1 = node.xpath("//li")

但是li1不仅获得了div_a,还获得了页面中的所有li元素。 我不知道是什么问题。

您的XPATH- //li实际上是从root元素中获取元素,因此得到了所有li 如果只想将node内的元素作为元素,则应给出相对的XPATH。 范例-

li1 = node.xpath(".//li")

. 在上面的意思是当前元素,它是class属性为'div_a'div元素。

修复第二个XPath是相对的,而不是像是绝对的,或者只使用一个XPath首先获取li元素:

li1 = page.xpath("//div[@class='div_a']//li")