14

我正在尝试在 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']

任何人都可以把我送到正确的方向吗?

4

1 回答 1

22

明确排除任何带有display:none:

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

也就是说——这只是浏览器实际功能的一个遥远的近似;如果您需要严格准确的结果,您会想要驱动一个实际的浏览器(如 Selenium、嵌入 API 等)。

于 2012-06-05T16:01:49.243 回答