【问题标题】:How to get the following siblings of a complex xpath query如何获取复杂 xpath 查询的以下同级
【发布时间】:2018-02-21 08:48:04
【问题描述】:

我有一个复杂的 html,我需要先检查一个子节点,然后才能知道我是否可以获得兄弟姐妹。例如:

<div class="test">
  <div>
    <a name="notme">
  </div>
</div>
<table>...<a> </table>
<div class="test">
  <div>
    <a name="pickme">
  </div>
</div>
<table>...<a> </table>

我需要从包含&lt;a name="pickme"&gt;&lt;div&gt; 后面的表中获取所有内容

这是我现在拥有的 xpath:

 response.xpath('(//div[@class="test"]//a[@name="pickme"])/following-sibling')

所以基本上我会寻找一个div,里面有一个&lt;a&gt;,它的名字是正确的。一旦我找到&lt;div&gt;,我就会得到它的下一个兄弟并检查内部。 我如何告诉 xpath “following-sibling”是指&lt;div&gt; 而不是&lt;a&gt;

【问题讨论】:

    标签: xpath scrapy


    【解决方案1】:

    选择div 而不是a 并检查XPath 谓词中a 的存在,然后您可以轻松地在路径中添加following-sibling 轴:

    //div[@class="test"][.//a/@name="pickme"]/following-sibling::table
    

    【讨论】:

    • 谢谢,我不知道谓词的用法。我在您的解决方案中注意到的一个想法是,如果在第一个表之后还有其他表,它也会被选中。如果我在最后添加 [1] 它应该可以正常工作。我说的对吗?
    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 2016-06-07
    • 1970-01-01
    • 2013-10-22
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多