Frage

Ich möchte alle Sheet-Definitionen in einer XHTML-Datei mit lxml.etree.findall zu finden. Dies könnte so einfach sein wie

elems = tree.findall('link[@rel="stylesheet"]') + tree.findall('style')

Aber das Problem mit CSS-Stildefinitionen ist, dass die Reihenfolge wichtig, z.

<link rel="stylesheet" type="text/css" href="/media/css/first.css" />
<style>body:{font-size: 10px;}</style>
<link rel="stylesheet" type="text/css" href="/media/css/second.css" />

, wenn der Inhalt des style Tages nach den Regeln in den beiden link Tags angewandt wird, kann das Ergebnis von den einer ganz anders sein, wo die Regeln angewandt werden, um der Definition.

Also, wie würde ich tun, eine Lookup, dass sowohl inlcudes link[@rel="stylesheet"] und style?

War es hilfreich?

Lösung

Mögliche Verwendung von XPATH:

data = """<link rel="stylesheet" type="text/css" href="/media/css/first.css" />
<style>body:{font-size: 10px;}</style>
<link rel="stylesheet" type="text/css" href="/media/css/second.css" />
"""

from lxml import etree

h = etree.HTML(data)

h.xpath('//link[@rel="stylesheet"]|//style')

[<Element link at 97a007c>,
 <Element style at 97a002c>,
 <Element link at 97a0054>]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top