#xpath基本语法
#1路径查询 //:查找所有子孙结点,不考虑层级关系
# /:找直接子节点
#2谓词查询 //div[@id]
# //div[@id="maincontent"]
#3属性查询 //@class
#4模糊查询 //div[contains(@id,"he")]
# //div[start-with(@id,"he")]
#5内容查询 //div/h1/text()
#6逻辑运算 //div[@id="head" and @class="s_down"] 和
# //title | //price 或 针对标签
from lxml import etree
#xpath解析
# (1)本地文件
#******(2)服务器响应的数据 response.read().decode('utf-8')
#解析(1)本地文件 etree.parse()
tree = etree.parse('070xpath的基本使用.html')
#tree.xpath('xpath路径')
#查找ul下的li
# li_list = tree.xpath('//ul/li')
#查找所有由id属性的li标签
#text()获取标签中的内容
# li_list= tree.xpath('//ul/li[@id]/text()')
#查找id=1的li标签 ###注意引号问题###
# li_list= tree.xpath('//ul/li[@id="2"]/text()')
#查找id为1的li标签的class的属性值
# li_list= tree.xpath('//ul/li[@id="1"]/@class')
#查询id中包含l的li标签
# li_list= tree.xpath('//ul/li[contains(@id,"l")]/text()')
#查询id的值以l开头的li标签
li_list= tree.xpath('//ul/li[starts-with(@id,"c")]/text()')
#判断列表的长度
print(li_list)
print(len(li_list))
#解析(2)服务器响应的数据 etree.HTML()
本地文件代码(070xpath的基本使用.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Title</title>
</head>
<body>
<ul>
<li id="l3">北京</li>
<li id="l2">上海</li>
<li id="c2" class="c1">深圳</li>
<li>武汉</li>
</ul>
<!-- <ul>-->
<!-- <li>大连</li>-->
<!-- <li>锦州</li>-->
<!-- <li>沈阳</li>-->
<!-- </ul>-->
</body>
</html>