Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python etree.findall:&x27;或'-查找?_Python_Xpath_Lxml_Elementtree - Fatal编程技术网

Python etree.findall:&x27;或'-查找?

Python etree.findall:&x27;或'-查找?,python,xpath,lxml,elementtree,Python,Xpath,Lxml,Elementtree,我想用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: 10

我想用
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" />

正文:{字体大小:10px;}
如果在两个
链接
标记中的规则之后应用
样式
标记的内容,则结果可能与按定义顺序应用规则的结果完全不同

那么,如何使用XPATH执行包含
链接[@rel=“stylesheet”]
样式的查找呢

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>]
data=”“”
正文:{字体大小:10px;}
"""
从lxml导入etree
h=etree.HTML(数据)
h、 xpath('//link[@rel=“stylesheet”]|//style')
[,
,
]

有趣的是,我用
tree.findall
尝试了这个表达式,我没有想到
tree.xpath
可以工作。谢谢不客气!在我写作时,我意识到您的
findall
表达式包含一个谓词,我不知道它会接受。自从熟悉了
xpath
之后,我就再也没有回到
findall