xpath
xpath介绍
- 概念 —— 一种XML查询语言,在XML文档中通过元素和属性进行导航
- XML概念 —— 一种标记语法的文本格式
- lxml模块 —— 包含将html文本转成xml对象,和对对象执行xpath功能
xml文档节点
<bookstore>
<book>
<title lang='eng'>Harry Potter</title>
<author>JK.Rowing</author>
<year>2005</year>
<price>29</price>
</book>
</bookstore>
- 文档节点 —— <bookstore>
- 元素节点 —— <title>、<author>、<year>、<price>
- 属性节点 —— lang=‘eng’
- book节点是title、author、year、price的父节点
- title、author、year、price节点是book的子节点
- title、author、year、price节点是同胞
xpath工具
- chrome内核使用xpath help工具
- firefox内核使用xpath checker
xpath工具的使用
表达式 | 含义 |
---|---|
/ | 从根节点选取 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置(搜索全部) |
. | 选取当前节点 |
. . | 选取当前节点的父节点 |
@ | 选取属性 |
text() | 获取文本内容 |
- []字符 —— 用来查找某个特定的节点或包含某个特定值的节点
表达式 | 结果 |
---|---|
/bookstore/book[x] | 选取属于bookstore子元素的第x个book元素 |
/bookstore/book[last()] | 选取属于bookstore子元素的最后一个book元素 |
/bookstore/book[last()-x] | 选取属于bookstore子元素的倒数第x+1个book元素 |
/bookstore/book[position()<x] | 选取属于bookstore子元素的最前面x-1个book元素 |
//title[@lang] | 选取所有title元素中拥有名为lang的属性的值 |
//title[@lang=‘eng’] | 选取所有title元素中拥有值为eng的lang属性 |
/bookstore/book[price>35] | 选取bookstore元素里所有price元素值大于35的book元素 |
lxml模块
-
简介 —— 一个HTML/XML的解析器,主要功能是解析和提取HTML/XML内容,需使用lxml模块内的etree模块
-
模块导入(etree):
from lxml import etree
使用方法
-
etree模块只能操作Element对象
- 字符串转换为Element对象方法:
etree.HTML(str)
- 字符串转换为Element对象方法:
-
xpath表达式使用
- Element对象.xpath(‘xpath表达式’)