lxml 按序選擇

2021-05-28 10:13 更新

有時候,我們在選擇的時候某些屬性可能同時匹配多個節(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é)點、序列等處理功能
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號