1

を使用して、XHTML ファイル内のすべてのスタイルシート定義を検索したいと考えていますlxml.etree.findall。これは次のように簡単です

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" />

style2 つのタグのルールの後にタグの内容をlink適用すると、定義順にルールを適用した場合とはまったく異なる結果になる可能性があります。

link[@rel="stylesheet"]では、 と の両方を含むルックアップを行うにはどうすればよいでしょうstyleか。

4

1 に答える 1

3

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>]
于 2010-03-16T11:32:56.383 に答える