LOADING

加载过慢请开启缓存 浏览器默认开启

xpath的基本使用

2023/11/12

xpath的基本语法

1.路径查询

//:查找所有子节点,不考虑层级关系
/:找直接子节点

2.谓词查询

//div[@id] 查找带有某个id的节点
//div[@id = “…”] 查找带有某个id且id名称限定的节点

3.属性查询

//@class
注意这里返回的是class的属性(也就是class后面的那个字符串),无法跟text()连在一起用!!

4.模糊查询

//div[contains(@id, “…”)] 包含
//div[starts-with(@id,”…”)] 以某个字符开头的

5.内容查询

//div/…/text()

6.逻辑运算

//div[@id=”…” and @class=”…”]
//div[@id=”…” or @class=”…”]

xpath的两种解析方式

第一种方式:解析本地文件

<body>
<ul>
    <li id='l1' class='c1'>北京</li>
    <li id='l2'>上海</li>
    <li id='k3'>深圳</li>

</ul>
<ul>
    <li>厦门</li>
    <li>福州</li>
</ul>
</body>
from lxml import etree
tree = etree.parse("xpath的基本使用.html")#传入文件的名称

#查找ul下面的li
li_list = tree.xpath('//body/ul/li')#这里还有一种写法是:'//body//li'

#查找所有有id属性的li标签
li_list = tree.xpath('//body/ul/li[@id]')
li_list = tree.xpath('//body/ul/li[@id]/text()')#加上一个text可以获取标签中的内容——北京、上海

#查找id为l1的标签
li_list = tree.xpath('//body/ul/li[@id="l1"]/text()')#注意引号!

#查找到id为l1的li标签的class的属性值
li_list = tree.xpath('//body/ul/li[@id="l1"]/@class')

#查询id中包含l的li标签
li_list = tree.xpath('//body/ul/li[contains(@id,"l")]')

#查询id中以l开头的li标签
li_list = tree.xpath('//body/ul/li[starts-with(@id,"l")]')

#查询id为l1且class为c1的
li_list = tree.xpath('//ul/li[@id="l1"and @class="c1"] ')

#查询id为l1或id为l2的
li_list = tree.xpath('//ul/li[@id="l1"]/text()| //ul/li[@id="l2"]/text()')

注,以上所有的返回的li_list都是一个列表!只有属性查询不能接text(),其他都可以使用text()来显示标签中的内容