有時候,我們在選擇的時候某些屬性可能同時匹配多個節(jié)點,但我們只想要其中的某個節(jié)點,如第二個節(jié)點或者最后一個節(jié)點,這時可以利用中括號引入索引的方法獲取特定次序的節(jié)點:
from lxml import etree text1=''' <div> <ul> <li class="aaa" name="item"><a href="link1.html">第一個</a></li> <li class="aaa" name="item"><a href="link1.html">第二個</a></li> <li class="aaa" name="item"><a href="link1.html">第三個</a></li> <li class="aaa" name="item"><a href="link1.html">第四個</a></li> </ul> </div> ''' html=etree.HTML(text1,etree.HTMLParser()) result=html.xpath('//li[contains(@class,"aaa")]/a/text()') #獲取所有l(wèi)i節(jié)點下a節(jié)點的內(nèi)容 result1=html.xpath('//li[1][contains(@class,"aaa")]/a/text()') #獲取第一個 result2=html.xpath('//li[last()][contains(@class,"aaa")]/a/text()') #獲取最后一個 result3=html.xpath('//li[position()>2 and position()<4][contains(@class,"aaa")]/a/text()') #獲取第一個 result4=html.xpath('//li[last()-2][contains(@class,"aaa")]/a/text()') #獲取倒數(shù)第三個 print(result) print(result1) print(result2) print(result3) print(result4) # ['第一個', '第二個', '第三個', '第四個'] ['第一個'] ['第四個'] ['第三個'] ['第二個']這里使用了last()、position()函數(shù),在XPath中,提供了100多個函數(shù),包括存取、數(shù)值、字符串、邏輯、節(jié)點、序列等處理功能
更多建議: