笔记
xpath解析原理:
- 数据解析原理:
-1.实例化一个etree对象,且将页面源码数据加载到该对象中
-2.调用etree对象中xpath方法,编写xpath表达式,提取数据
- 环境安装:
- pip install lxml
- 实例化一个etree对象: from lxml import etree
- 1.将本地中的html文档中的源码加载到etree对象中
etree.parse(filePath)
-2 .将互联网上获取的页面加载到etree对象中
etree.HTML('page_text')
- xpath('xpath表达式')
-xpath表达式:
/:表示从根节点开始定位。表示的是一个层级
//:表示的是从任意位置开始定位。表示的是多个层级
- 属性定位:r = tree.xpath('//div[@class="red"]') #属性定位
- 索引定位:r = tree.xpath('//div[@class="red"]/p[3]') #div class=red标签下的第三个p标签
- 提取文本:r = tree.xpath('//div[@class="red"]/p[3]/text()')
- /text():获取的是标签中直系文本内容
- //text():获取的是标签中所有文本内容
- 属性提取:r = tree.xpath('//div[@class="red"]/img/@src')
- /@attrName ==>img/src
代码
from lxml import etree
if __name__ == '__main__':
# 实例化好了一个etree对象
tree = etree.tree('test.html')
# r = tree.xpath('/html/head/title') # xpath为 /html/head/title根目录下html下head下的title标签
# r = tree.xpath('//div[@class="red"]') #属性定位
r = tree.xpath('//div[@class="red"]/p[3]') #div class=red标签下的第三个p标签
print(r)
标签:xpath,etree,tree,div,class,red
From: https://www.cnblogs.com/lin513/p/18034776