2011-04-08 34 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