xml是一种标记语法的文本格式,xpath可以方便的定位xml中的元素和其中的属性值。lxml是python中的一个第三方模块,它包含了将html文本转成xml对象,和对对象执行
xpath的功能
xml_content = '''
<bookstore>
<book>
<title lang='eng'>Harry Potter</title>
<author>JK.Rowing</author>
<year>2005</year>
<price>29<price>
</book>
</bookstore>
'''
上面的XML文档中的节点例子:
<bookstore〉(文档节点)
<author>] K. Rowling</author>(元素节点) lang="en”(属性节点)
- 父(Parent) book元素是title、author、year、price元素的父
- 子(Children) title、author、year、price都是book元素的子
- 同胞(Sibling) title、author、year、price都是同胞
- 先辈(Ancestor) title元素的先辈是 book元素和bookstore元素
基本使用
/ 从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。
查找某个特定的节点或者包含某个指定的值的节点:
/bookstore/bookstorebook[1]
选取属于 bookstore 子元素的第一个 book 元素。
/bookstore/bookstorebook[last()]
选取属于 bookstore 子元素的最后一个 book 元素。
/bookstore/bookstorebook[last()-1]
选取属于 bookstore 子元素的倒数第二 个 book 元素。 /bookstore/bookstorebook[position()<3] 选取最前面的两个属于 bookstore 元素 //title[@lang]
选取所有拥有名为 lang 的属性的 title 元素。
//title[@lang='eng']
选取所有 title 元素,且这些元素拥有 值为 eng 的 lang 属性。 /bookstore/bookstorebook[price>35.00] 选取 bookstore 元素的所有 book 元 素,且其中的 price 元素的值须大于 35.00。
模块的使用
在Python中,我们安装lxml库来使用XPath 技术
lxml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML数据利用etree.HTML,将字符串转化为Element对象
lxml python 官方文档:http://lxml.de/index.html
可使用 pip 安装:pip install lxml
lxml 可以⾃动修正 html 代码