xpath提取器




前言

讲过了css提取器,大家应该对提取数据有一定了解了,今天就来讲解第二种提取数据方法——xpath提取


一、什么是xpath

XPath(XML Path Language) 是一门在 HTML\XML 文档中查找信息的 语言 ,可用来在 HTML\XML 文档中对 元素和属性进行遍历

二、xpath节点关系


在这里插入图片描述


点击此处 开辟新世界了解更多相关内容。


在这里插入图片描述


二.语法

1.语法


在这里插入图片描述
在这里插入图片描述


2.案例

import parsel  # str --> Selector对象   具有xpath方法   提取到的数据返回一个列表
html_str = """
                <li class="item-1">
                    <a href="link1.html">第一个</a>
                <li class="item-2">
                    <a href="link2.html">第二个</a>
                <li class="item-3">
                    <a href="link3.html">第三个</a>
                <li class="item-4">
                    <a href="link4.html">第四个</a>
                <li class="item-5">
                    <a href="link5.html">第五个</a> 
        </div>
# 1、转换数据类型
# data = parsel.Selector(html_str).extract()  # parsel能够把缺失的html标签补充完成
data = parsel.Selector(html_str)  # parsel能够把缺失的html标签补充完成
# 2、解析数据--list类型
# print(data)
# 2、1 从根节点开始,获取所有<a>标签
result = data.xpath('/html/body/div/ul/li/a').extract()
# 2、2 跨节点获取所有<a>标签
result = data.xpath('//a').extract()
# 2、3 选取当前节点   使用场景:需要对选取的标签的下一级标签进行多次提取
result = data.xpath('//ul')
result2 = result.xpath('./li').extract()    # 提取当前节点下的<li>标签
result3 = result.xpath('./li/a').extract()  # 提取当前节点下的<a>标签
# 2、4 选取当前节点的父节点,获取父节点的class属性值
result = data.xpath('//a')
result4 = result.xpath('../@class').extract()
# 2、5 获取第三个<li>标签的节点(两种方法)
result = data.xpath('//li[3]').extract()
result = data.xpath('//li')[2].extract()
# 2、6 通过定位属性的方法获取第四个<a>标签
result = data.xpath('//a[@href="link4.html"]').extract()
# 2、7 用属性定位标签,获取第四个<a>标签包裹的文本内容
result = data.xpath('//a[@href="link4.html"]/text()').extract()
# 2、8 获取第五个<a>标签的href属性值
result = data.xpath('//li[5]/a/@href').extract()