XPath를 통해 페이지를 긁어 내려했지만 예상대로 작동하지 못했습니다.lxml XPath 위치()가 작동하지 않습니다.
페이지 같은이며,
<tag1>
<tag2>
....
<div id=article>
<p> stuff1 </p>
<p> stuff2 </p>
<p> ...... </p>
<p> stuff30 </p>
나는 문자열로 stuff30
을 통해 stuff1
을 추출 할. 다음은 파이썬 코드입니다.
import lxml.html
import urllib.request
html = urllib.request.urlopen('http://www.something.com/news/blah/').read()
root = lxml.html.fromstring(html)
content = root.xpath('string(//div[@id="article"]/p[position()=>1 and position()<=last()]/.)')
이 코드는 아무 것도 반환하지 않습니다.
position()
문을 개별 요소 인덱스로 다시 작성하면 작동합니다.
content = root.xpath('string(//div[@id="article"]/p[25]/.)')
이 코드는 stuff25
을 올바르게 반환합니다.
저는 이것을 위해 루프 만 실행하고 싶지 않습니다. position()
으로 코드 작업을 수행 할 수있는 방법이 있지만 내 코드에 무엇이 잘못된 것인지 잘 모르겠습니다.
'position() => 1'근처에서 정확합니까? 그게'position()> = 1'일까요? – Wickramaranga
아니요, 작동하지 않는 것 같습니다. 아래 @tomalak 주석 아래에서 XPath의 문자열은 여러 노드에서 작동하지 않습니다. –
@ K.K. 그럼에도 불구하고'> ='이어야합니다. '=>'는 에러를 일으킬 것이다. – Tomalak