pip3 install lxml二.导入与实例化
#导入 from lxml import etree #实例化 html=etree.parse(fliepath) #本地对象 html=etree.HTML(page_text) #网页对象(page_text为requests请求获得)三.XPath规则 样本代码
page_text='''
result=html.xpath('//*')
#运行结果
[, , , , , , , , , , , , , ]
2.字节点
#子孙节点//
result=html.xapth('//li')
#运行结果
[, , , , ]
#直接子节点/
result=html.xapth('//li/a')
#运行结果
[, , , , ]
3.父节点
result=html.xpath('//li[@]/..')
result=html.xpath('//div[@]/parent::*')
#运行结果
[]
4.文本获取
result=html.xpath('//li[@]/text()')
#运行结果
['n ']
result=html.xpath('//li[@]//text()')
#运行结果
['first item', 'fifth item', 'n ']
result=html.xpath('//li[@]//text()')[0]
#运行结果
first item
result=html.xpath('//a[@href="link1.html"]/text()')
#运行结果
['first item']
result=html.xpath('//a[@href="link1.html"]/text()')[0]
#运行结果
first item
5.属性匹配
result=html.xpath('//li[@]')
#运行结果
[, ]
6.属性多值匹配
#代码
#代码
result=html.xpath('//li/a/@href')
#运行结果
['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']
'''
注意与属性匹配的区别:
属性匹配 a[@href="link1.html"]
获取属性 a/@href
'''
9.按序选择
result=html.xpath('//li[1]//text()')
#运行结果
['first item']
result=html.xpath('//li[last()]//text()')
#运行结果
['fifth item', 'n ']
result=html.xpath('//li[position()<3]//text()')
#运行结果
['first item', 'second item']
result=html.xpath('//li[last()-2]//text()')
#运行结果
['third item']
10.节点轴选择
#获取所有祖先节点
result=html.xpath('//li[1]/ancestor::*')
#运行结果
[, , , ]
#获取特定祖先节点
result=html.xpath('//li/ancestor::ul')
#运行结果
[]
#获取所有属性值
result=html.xpath('//li/attribute::*')
#运行结果
['item-0', 'item-1', 'item-inactive', 'item-1', 'item-0']
#获取所有子节点
result=html.xpath('//li/child::*')
#运行结果
[, , , , ]
#获取特定子节点
result=html.xpath('//li/child::a[@href="link2.html"]')
#运行结果
[]
#获取所有子孙节点
result=html.xpath('//ul/descendant::*')
#运行结果
[, , , , , , , , , , ]
#获取特定子孙节点
result=html.xpath('//ul/descendant::li')
#运行结果
[, , , , ]
#获取当前节点之后的节点
result=html.xpath('//li[1]/following::*[2]')
#运行结果
[]
#获取当前节点之后的所有同级节点
result=html.xpath('//li[1]/following-sibling::*')
#运行结果
[, , , ]
'''
li[1]即第一个li标签
'''



