使用样式显示过滤内容:在XPath表达式中为none

时间:2012-06-05 15:37:56

标签: xpath

我正在尝试用python中的lxml进行解析,这是我的输出

<td>
    <span style="display:inline">text1</span>
    <span style="display:none">text2</span>
    <span>text3</span>
    text4
</td>

以为我足够聪明,可以使用以下

tree = tr.xpath("//*[contains(@style,'inline')]/text()")

但后来我以为我只会看到text1。 我想要的是看到text3和text4,以便输出

['text1','text3','text4']

有人能把我送到正确的方向吗?

1 个答案:

答案 0 :(得分:16)

使用display:none明确排除任何内容:

tree = tr.xpath("//*[not(contains(@style,'display:none'))]/text()")

那就是说 - 这只是浏览器实际做的一个遥远的近似值;如果您需要严格准确的结果,那么您希望驾驶实际的浏览器(如Selenium,嵌入API等)。