2012-06-05 14 views
7

ich mit lxml in Python zu analysieren ich versucht, und dies ist mein AusgangAusfiltern Inhalt mit Stil display: none in einem XPath-Ausdruck

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

Dachte, ich war klug genug, um die folgende

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

Aber dann dachte ich, ich würde nur text1 sehen. Was ich will, ist text3 und text4 zu sehen, so dass der Ausgang

[ ‚text1‘, ‚text3‘, ‚text4‘] wird

Kann mir jemand, es zu tun, um die richtige Richtung schicken?

Antwort

6

Explizit nichts ausschließen mit display:none:

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

Das heißt - das ist nur eine entfernte Annäherung von dem, was ein Browser tatsächlich tun würde; Sie möchten einen echten Browser (wie Selenium, APIs oder ähnliches) verwenden, wenn Sie streng genaue Ergebnisse benötigen.

Verwandte Themen