2011-04-08 10 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') 

I 출력으로 원하는 :

link1 
link2 

가 cssselect으로이 가능합니까? 그렇지 않다면 어떻게해야합니까? (? XPath는)

+0

좋은 질문입니다. +1. 완전하고 짧은, 한 줄짜리 XPath 솔루션에 대한 내 대답을보십시오. :) –

답변

1

다음 XPath 식 (CSS 없음이 필요하지 않습니다)를 사용하여 문맥 노드의 문자열 값이 문자열 'Awsome'로 시작하는 id 속성을 갖는

+0

일치하는 문자열 안의 괄호를 사용하면 SelectorSyntaxError : 연산자가 예상 됨, \ – Amalgovinus

+0

@Amalgovinus, 이는 어떻게 든 XPath 표현식을 CSS에 제공했음을 의미합니다. XPath 엔진에 의해 처리됩니다 -이 예제에서는 자바 스크립트에서 사용할 수 있습니다.이 질문은 "xpath"태그가 붙어 있습니다 - 따라서 XPath 솔루션 :) 그리고 OP는 (질문 끝 부분에서) XPath 솔루션 –

+0

네, XPath junk를 css func에 전달했습니다. 역방향이면됩니다. 감사 – Amalgovinus

4

^= 비교 연산자는 당신을 위해 보인다

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

이 XPath 표현식은 모든 tr 아이를 선택 :

tr[id^=Awesome] a