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 に答える