我正在尝试用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']
有人能把我送到正确的方向吗?
答案 0 :(得分:16)
使用display:none
明确排除任何内容:
tree = tr.xpath("//*[not(contains(@style,'display:none'))]/text()")
那就是说 - 这只是浏览器实际做的一个遥远的近似值;如果您需要严格准确的结果,那么您希望驾驶实际的浏览器(如Selenium,嵌入API等)。