lxml XPATH给出所有元素而不仅仅是当前节点下的元素

时间:2015-10-21 15:39:18

标签: python xpath lxml

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获得了页面中的所有li元素,而不仅仅是div_a。我无法弄清问题是什么。

2 个答案:

答案 0 :(得分:0)

您的XPATH - //li - 实际上是从根元素中获取元素,因此您获得了所有li。如果你只想取node内的元素,你应该给出相对的XPATH。示例 -

li1 = node.xpath(".//li")
上面的

.表示当前元素,其中div元素的class属性为'div_a'

答案 1 :(得分:0)

将第二个XPath修改为相对而不是绝对的Anand suggests,或者只使用一个XPath来获取q元素:

li