我試圖通過XPath抓取頁面,但無法按預期工作。lxml XPath位置()不起作用
的頁面是一樣,
<tag1>
<tag2>
....
<div id=article>
<p> stuff1 </p>
<p> stuff2 </p>
<p> ...... </p>
<p> stuff30 </p>
我想通過stuff30
作爲字符串提取stuff1
。這是我的Python代碼片段。
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
不,看起來不起作用...下面的@ @ @馬來語評論,XPath中的字符串不能用於多個節點。 –
@ K.K。它應該是'> ='。 '=>'會導致錯誤。 – Tomalak