1. 程式人生 > >Python爬蟲:在帶有多個屬性值的class選擇器中選擇其中一個值,實現標籤快速精準定位

Python爬蟲:在帶有多個屬性值的class選擇器中選擇其中一個值,實現標籤快速精準定位

在寫爬蟲時,定位標籤位置獲取想要的資料是匹配工作的重點。通過class或id選擇器的值(屬性值要求在網頁中是唯一的)可以很快的實現標籤的定位。

<span data-post-id="114214" class=" btn-bluet-bigger href-style vote-post-up   register-user-only "><i class="fa  fa-thumbs-o-up"></i> <h10 id="114214votetotal">1</h10> 贊</span>

然而,在匹配網頁標籤時,我們經常會碰到選擇器class中有多個屬性 class=" btn-bluet-bigger href-style vote-post-up   register-user-only ",但是我們只想選擇其中的一個值(如vote-post-up,它在網頁中是唯一的)來實現標籤的精準定位。這個時候有兩個辦法:

1.笨方法:

不做任何處理,選擇整個標籤class的屬性值(一個都不能少),但是這個方法很多時候沒有普適性,很容易出錯,而且也程式碼也看的很亂。----------不建議這樣使用,用這個方法,還不如往前找一個父級標籤,然後用路徑定位到這個標籤呢

//*[@class=" btn-bluet-bigger href-style vote-post-up   register-user-only "><i class="fa  fa-thumbs-o-up"]

2.使用contains()方法

從字面意思上理解就是,判斷是否包含一個元素,所以定位用來判斷的這個元素一定要是唯一的,不然實現不了你想要標籤的定位。

用法:contains(你要的屬性值如class,class中的每一個值)

//span[contains(@class,'vote-post-up')]

如,上述就是判斷span標籤中的class是否包含vote-post-up值,如果包含就返回該標籤在網頁中的位置

有了這個位置之後你在確定後面是取值,還是仍要進一步的往下定位。