1

我想在带有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" />

如果style在两个标签中的规则之后应用标签的内容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 回答