etree.findall:「OR'ルックアップ?
-
20-09-2019 - |
質問
私はlxml.etree.findall
とXHTMLファイル内のすべてのスタイルシートの定義を見つけたいです。これは、
elems = tree.findall('link[@rel="stylesheet"]') + tree.findall('style')
しかし、CSSスタイル定義の問題は、順序が重要、例えばということです。
<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" />
style
タグの内容を二link
タグのルールの後に適用される場合、、結果は、ルールが定義の順序で適用されるものとは全く異なっていてもよい。
だから、私はlink[@rel="stylesheet"]
とstyle
の両方をinlcudes検索を行うだろうか?
解決
可能性のある使用して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>]
所属していません StackOverflow