安装lxml库
pip install lxml -i https://pypi.douban.com/simple
导入lxml.etree
from lxml import etree
注:etree导入报错,属于pycharm自身的问题,运行无碍
etree的属性和方法
etree.parse('本地文件路径') 用于解析本地文件
etree.HTML(respond.read().decode('utf-8')) 用于解析服务器响应的数据 🌟
etree对象.xpath('xpath路径') 用于精确提取某一标签值 🌟
xpath的基本语法:
![](https://img-blog.csdnimg.cn/img_convert/6763534992a34e6a93413ba3f30dccae.png)
实战案例:
demo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<ul>
<li id="l1" class="c1">北京</li>
<li id="l2">上海</li>
<li>武汉</li>
<li>深圳</li>
</ul>
</body>
</html>
from lxml import etree
# xpath解析
# (1)本地文件 etree.parse(本地文件路径)
# (2)服务器响应的数据 etree.HTML(respond.read().decode('utf-8'))
# xpath解析本地文件
tree = etree.parse('demo.html')
#print(tree)
# 查找ul下面的li, //为所有子孙都可,/只能为直接孩子🌟
li_list_01 = tree.xpath('//body/ul/li')
li_list_02 = tree.xpath('//body/li')
#找到所有有id属性的li标签🌟
li_list_03 = tree.xpath('//ul/li[@id]')
#找到所有id属性为l1的li标签🌟
li_list_04 = tree.xpath('//ul/li[@id="l1"]')
#查找到id为l1的标签class的属性值
li_list_05 = tree.xpath('//ul/li[@id="l1"]/@class')
#获取所有有id属性的li标签内容🌟
li_list_06 = tree.xpath('//ul/li[@id]/text()')
#获取所有id属性为l1的li标签🌟
li_list_07 = tree.xpath('//ul/li[@id="l1"]/text()')
# 判断列表内容和长度
print(li_list_06)
print(len(li_list_06))