使用时先安装 lxml 包
开始使用#
和beautifulsoup类似,首先我们需要得到一个文档树
把文本转换成一个文档树对象
from lxml import etreeif __name__ == '__main__':doc='''
first itemsecond itemthird itemfourth itemfifth item# 注意,此处缺少一个闭合标签'''html = etree.HTML(doc)result = etree.tostring(html)print(str(result,'utf-8'))
把文件转换成一个文档树对象
fromlxmlimportetree# 读取外部文件 index.htmlhtml = etree.parse('./index.html')result = etree.tostring(html, pretty_print=True)#pretty_print=True 会格式化输出print(result)
均会打印出文档内容
节点、元素、属性、内容#
xpath 的思想是通过 路径表达 去寻找节点。节点包括元素,属性,和内容
元素举例
html --->...div --->
...a --->...
这里我们可以看到,这里的元素和html中的标签一个意思。单独的元素是无法表达一个路径的,所以单独的元素不能独立使用
路径表达式#
/ 根节点,节点分隔符,// 任意位置. 当前节点.. 父级节点@ 属性
通配符#
* 任意元素@* 任意属性node() 任意子节点(元素,属性,内容)
谓语#
使用中括号来限定元素,称为谓语
多个路径#
用| 连接两个表达式,可以进行 或匹配
//book/title | //book/price
函数#
contains(string1,string2)
starts-with(string1,string2)
ends-with(string1,string2) #不支持
upper-case(string) #不支持
text()
last()
position()
node()
可以看到last()也是个函数,在前面我们在谓语中已经提到过了
案例#
定位元素#
匹配多个元素,返回列表
fromlxmlimportetreeif__name__ =='__main__':doc='''