我想在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
的查找?
答案 0 :(得分: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>]