xpath属于xml/html解析数据的一种方法,基于元素(Element)的树形结构(Node>Element).选择某一元素时,根据原始的路径选择,如/html/head/title
获取<title>
标签。安装包pip install lxml
绝对路径
从根标签开始,按tree结构依次向下查询。
如/html/body/table/tbody/tr。
相对路径
相对路径可以有以下写法
-
路径写法
/
依次查找//
间接查找./
从当前元素下查找.//
从当前元素的间接子节点查找
-
相对于整个文档
//img
查找处文档中所有的
<img>
标签元素 -
相对于当前节点
//table
假如当前节点是
<table>
,查找它的<img>
的路径的写法.//img
数据提取
-
提取文本
//title/text()
-
提取属性
//img/@href
位置条件
获取网页中的数据类型与字符集,获取第一个<meta>
标签
//meta[1]//@content
获取最后一个<meta>
标签
//meta[last()]//@content
获取倒数第二个<meta>
标签
//meta[position()-2]//@content
获取前2个<meta>
标签
//meta[position()< 3]//@content
属性条件
查找class为circle-img
的<img>
//img[@class='circle-img']
查找class为xx1
以及name为xx2
的<li>
(多个属性的且的关系)
//li[@class="xx1" and @name="xx2"]
查找所有标签的class属性
//@class
同时获取title和price两个标签
//title | //price
模糊条件
//div[contains(@class,"page")]
查找class属性包含page的所有div标签//div[start-with(@class,"box")]
第一个class的属性值为box的div标签//div[end-with(@class,"clearfix")]
最后一个class的属性值为clearfix的div标签