Xpath表達式:
/ 描述:從根節點選取
// 描述:從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置
. 描述:選取當前節點
.. 描述:選取當前節點的父節點
@ 描述:選取屬性
定位目標標簽思路:“先抓大再抓小”,先找到循環節點,再細分
給出一個簡單例子如下:
from lxml import etree import requests headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36' } url = 'http://a.qidian.com/?page=1' res = requests.get(url,headers=headers) selector = etree.HTML(res.text) #print(res.text) ''' str=selector.xpath('/html/body/div[1]/div[5]/div[2]/div[2]/div/ul/li[1]/div[2]/p[1]/a[1]/text()')#通過/text()可以獲得標簽中的文字信息 print(str) ''' infos = selector.xpath('//ul[@class="all-img-list cf"]/li') print(infos) for info in infos: author = info.xpath('div[2]/p[1]/a[1]/text()')[0] print(author)
網站:
錯誤點:
author = info.xpath('/div[2]/p[1]/a[1]/text()')[0]
開始的時候,一直多加了一個單斜杠,找了好久這個錯才找出來,一直以為我找的Xpath路徑出錯了。
正確:
author = info.xpath('div[2]/p[1]/a[1]/text()')[0]