Python CSS选择器仅按属性查询,使用LXML

Python CSS选择器仅按属性查询,使用LXML,python,css,lxml,Python,Css,Lxml,我希望在属性包含{%的位置获取标记,如以下示例所示: <a href="{% route xy %}></a> <img src="{% static xy %}/> 属性键并不重要 我能想到的最好方法是tag.cssselect[href*={%],但当我想匹配所有属性时,它只匹配hrefs,而不考虑键。您可以使用XPath选择器实现这一点-如果可以接受的话。-,就像这样: //*[@*[contains(.,'{%')]] 上面的XPath选择具有

我希望在属性包含
{%
的位置获取标记,如以下示例所示:

<a href="{% route xy %}></a>
<img src="{% static xy %}/>

属性键并不重要


我能想到的最好方法是
tag.cssselect[href*={%]
,但当我想匹配所有属性时,它只匹配
href
s,而不考虑键。

您可以使用XPath选择器实现这一点-如果可以接受的话。-,就像这样:

//*[@*[contains(.,'{%')]]
上面的XPath选择具有任何包含
“{%”
的属性的所有元素。以下是演示的工作示例:

from lxml.html import etree

html = """<div>
<a href="{% route xy %}"></a>
<img src="{% static xy %}"/>
</div>"""
root = etree.fromstring(html)
result = root.xpath("//*[@*[contains(.,'{%')]]")
for r in result:
    print etree.tostring(r)
从lxml.html导入etree
html=”“”
"""
root=etree.fromstring(html)
result=root.xpath(“/*[@*[包含(,'{%')]]”)
对于结果中的r:
打印etree.tostring(r)
输出:

<a href="{% route xy %}"/>

<img src="{% static xy %}"/>

您必须为它们中的每一个进行定义。