python中lxml库与Xpath语法

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]

猜你喜欢

转载自www.cnblogs.com/sengzhao666/p/12315155.html