首页 > 解决方案 > scrapy 和 xpath:如果父元素包含文本,则获取子元素中的文本

问题描述

如果父元素包含带有特定字符串的文本,我如何获取子元素的文本?

例如:

<li>
    "string1"
    <span>
        "Hello"
    </span>
</li>
<li>
    "string2"
    <span>
        "Ola"
    </span>
</li>

从上面的 html 代码中,如何使用 xpath 只获取字符串“Ola”?

标签: xpathscrapy

解决方案


在不知道scrapy的情况下,我会尝试

//li[text()[contains(.,"string2")]]/span/text()
  • //li[text()[contains(.,"string2")]]选择li文本包含的元素string2
  • /span选择所选元素span下方的元素li
  • /text(): 返回所选 span 元素的文本

更新:这更简单,也应该工作:

//li[contains(text(),"string2")]/span/text()

推荐阅读