一、xpath简介
XPath即为[XML]路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
二、xpath安装
- pip install lxml
- chrome商店搜索,搜索<XPath Helper>,下载并添加该扩展程序。
三、xpath基本使用
- from lxml import etree
1)加载本地html文件
- html_tree = etree.parse("./test.html")
2)直接加载获取到的html网页
- html_tree = etree. HTML(html)
四、xpath基本语法
ret = html_tree.xpath("/html/body/ol/li") # 返回一个列表
ret = html_tree.xpath("/html/body/ol/li[1]") # 返回一个列表 该列表中取第一个对象
ret = html_tree.xpath("/html/body/div/div[2]/a") # 返回一个列表
1. 找节点的对应的内容值
ret = html_tree.xpath("/html/body/div/ol[1]/li[1]/text()") # 返回一个列表
2. 找节点对应的属性值
ret = html_tree.xpath("/html/body/div/div[2]/a/@href") # 返回一个列表
1. 层级定位
ret = html_tree.xpath("//li/text()") # '/'代表节点前面有一层 '//'代表节点前面有若干层
2. 属性定位
- 获取页面中有id属性的li
ret = html_tree.xpath("//li[@id]")
- 获取所有的class值为hehe的li
ret = html_tree.xpath("//li[@class='hehe']")
> 注意!!!若一个节点的某个属性有多个值,如class属性, 一定要把这些值写全
- 获取所有class值为以h开头的li
ret = html_tree.xpath("//li[starts-with(@class,'h')]")
- 获取所有class值中含有a的li
ret = html_tree.xpath("//li[contains(@class,'a')]")
- 查找所有class值为hehe并且id为tata的li
ret = html_tree.xpath("//li[@class='hehe' and @id='tata']")
- 查找所有class值为hehe或者包含a的li
ret = html_tree.xpath("//li[@class='hehe' or contains(@class,'a')]")
- 列表去第0个
obj = html_tree.xpath("//div[@id='pp']")[0]
- 以obj为根,继续向内部查找
ret = obj.xpath(".//li/text()") # '.'必须带上,否则都将默认以html为根查找
网友评论