一,場(chǎng)景
用python寫爬蟲代碼時(shí),如下代碼中需要寫xpath路徑

圖中title_path,src_path 寫起來(lái)xlml比較繁瑣,每一層元素都需要寫出元素的屬性,
那有什么技巧可以方便的寫出xpath路徑呢
二,準(zhǔn)備工作
1,瀏覽器安裝Xpath helper?安裝教程鏈接
2,比如我們要提取豆瓣網(wǎng)上周星馳的所有電影名字網(wǎng)址
三,操作步驟
1,打開(kāi)網(wǎng)址,在瀏覽器中按F12? 進(jìn)入Chrome開(kāi)發(fā)者工具,可以查看原代碼,點(diǎn)擊如下圖,
?2, 點(diǎn)擊(或用者用快捷鍵Ctrl+Shift+C)進(jìn)入選擇元素模式,然后從頁(yè)面中選擇需要查看的元素,然后可以在開(kāi)發(fā)者工具元素(Elements)一欄中????定位到該元素源代碼的具體位置?。


3,我們的目標(biāo)是獲取所有的電影名字,用圖形選擇模式,選中其中一個(gè)電影如《喜劇之王》如,右側(cè)源代碼中自動(dòng)的的定位到該元素在lxml?位置上??

4,會(huì)得到:
/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[5]/div/div/div[1]/a
可以觀察到這個(gè)xpath 是根據(jù)節(jié)點(diǎn)出現(xiàn)的順序依次寫出下個(gè)節(jié)點(diǎn)的
5,我們?cè)趤?lái)重復(fù)上個(gè)步驟工作,選擇另一個(gè)目標(biāo)《美人魚》的xpath定位
/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[7]/div/div/div[1]/a
可以觀察到兩個(gè)xpath路徑非常對(duì)應(yīng),僅僅在中間的div[]的出現(xiàn)順序不同,那么我們可以在這個(gè)分叉的節(jié)點(diǎn)處理下?

6,可以觀察到從這個(gè)節(jié)點(diǎn)下,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)這個(gè)網(wǎng)頁(yè)中每部電影的模塊,只要在這個(gè)節(jié)點(diǎn)修改元素表示方法即可,發(fā)現(xiàn)改節(jié)點(diǎn)的class屬性較長(zhǎng),不屬于常規(guī)的特征值,但我們可以觀察其子節(jié)點(diǎn)的關(guān)系

每個(gè)子元素的屬性相同,且是比較好的特征。
/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[5]/div/div/div[1]/a
/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]/div[7]/div/div/div[1]/a
修改如下:
/html/body/div[3]/div[1]/div/div[2]/div[1]/div[1]//div[@class="item-root"]/div/div[1]/a
注意使用? ”//“
7,啟動(dòng)xpath helper 驗(yàn)證,將修改的節(jié)點(diǎn)復(fù)制到框中,觀察結(jié)果是否和預(yù)想的一樣

,