2011-04-08 36 views
3

如何使用cssselect获取所有通配符元素?Lxml cssselect通配符

例如:

content = """ 
<table> 
<tr id='Awesome1234'><a href="link1"></a></tr> 
<tr id='Awesome5678'><a href="link2"></a></tr> 
</table> 
""" 
doc = lxml.html.fromstring(html) 
links = lxml.cssselection('tr.Awesome* a') 
for link in links: 
    print link.get('href') 

我希望它输出:

link1 
link2 

这可能与cssselect?如果没有,我怎么能得到这个? (?的XPath)

+0

好问题,+1。查看我的答案,获取完整而简短的单行XPath解决方案。 :) – 2011-04-08 13:30:16

回答

1

使用下面的XPath表达式(无需CSS):

tr[starts-with(@id, 'Awesome')] 

此XPath表达式选择所有tr儿童上下文节点具有id属性,其字符串值以字符串'Awsome'开头。

+0

在匹配的字符串中使用parens,就像给我SelectorSyntaxError:运算符预期的那样,获得了 \ – Amalgovinus 2014-11-30 23:27:50

+0

@Amalgovinus,这意味着你已经将XPath表达式以某种方式提供给了CSS。由XPath引擎处理 - 在这个例子中很可能是由JavaScript中的一个可用的。这个问题被标记为“xpath” - 因此是XPath解决方案:)并且请注意OP是问(在问题结束时)为XPath解决方案。 – 2014-12-01 03:41:00

+0

是的,我正在将XPath垃圾传递给css函数 - 向后移动它。谢谢 – Amalgovinus 2014-12-01 07:46:24

4

^=比较运营商似乎对你:

tr[id^=Awesome] a