【问题标题】:xpath get following siblings from current up to a certain pointxpath 从当前到某个点获取以下兄弟姐妹
【发布时间】:2019-08-30 06:11:13
【问题描述】:

这里是html:

   <a href="" target="_blank">title</a>
    <br>
    text
    <br>
    more text
    </p>
    <a href="" target="_blank">title2</a>
    more more text
    </p>
    <a href="" target="_blank">title3</a>

我目前已经选择了其中一个 a 元素并希望将文本添加到下一个兄弟元素,可能有一个或多个文本节点。

我事先不知道文本标题。

xpath('./following-sibling::br/text()')

我也试过这个:

xpath('.//*[preceding-sibling::p]following-sibling::text()')

预期输出: ['text','more text']

【问题讨论】:

    标签: python xpath


    【解决方案1】:

    选择所有 a 元素和所有文本元素,然后迭代检查它是否是 a 标签,如果不是,则附加字符串并为每个新 a 元素开始一个新标签:

    tree.xpath('//a[@target="_blank"] | //a[@target="_blank"]/../text()')
    

    【讨论】:

      【解决方案2】:

      这就是你需要的。

         xpath('.//preceding-sibling::br[following-sibling::p]/text()')
      

      【讨论】:

      • 不起作用:lxml.etree.XPathEvalError:无效的表达式。你不能像这样在前面的兄弟姐妹旁边有一个 *...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多