【Xpath提取器】


前言

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


一、什么是xpath

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

二、xpath节点关系

在这里插入图片描述

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

在这里插入图片描述

二.语法

1.语法

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

2.案例

import parsel  # str --> Selector对象   具有xpath方法   提取到的数据返回一个列表

html_str = """
        <div> 
            <ul> 
                <li class="item-1">
                    <a href="link1.html">第一个</a>
                </li> 
                
                <li class="item-2">
                    <a href="link2.html">第二个</a>
                </li> 
                
                <li class="item-3">
                    <a href="link3.html">第三个</a>
                </li> 
                
                <li class="item-4">
                    <a href="link4.html">第四个</a>
                </li> 
                
                <li class="item-5">
                    <a href="link5.html">第五个</a> 
                </li>
            </ul>
        </div>
    """
# 1、转换数据类型
# data = parsel.Selector(html_str).extract()  # parsel能够把缺失的html标签补充完成
data = parsel.Selector(html_str)  # parsel能够把缺失的html标签补充完成
# 2、解析数据--list类型
# print(data)
# 21 从根节点开始,获取所有<a>标签
result = data.xpath('/html/body/div/ul/li/a').extract()
# 22 跨节点获取所有<a>标签
result = data.xpath('//a').extract()
# 23 选取当前节点   使用场景:需要对选取的标签的下一级标签进行多次提取
result = data.xpath('//ul')
result2 = result.xpath('./li').extract()    # 提取当前节点下的<li>标签
result3 = result.xpath('./li/a').extract()  # 提取当前节点下的<a>标签
# 24 选取当前节点的父节点,获取父节点的class属性值
result = data.xpath('//a')
result4 = result.xpath('../@class').extract()
# 25 获取第三个<li>标签的节点(两种方法)
result = data.xpath('//li[3]').extract()
result = data.xpath('//li')[2].extract()
# 26 通过定位属性的方法获取第四个<a>标签
result = data.xpath('//a[@href="link4.html"]').extract()
# 27 用属性定位标签,获取第四个<a>标签包裹的文本内容
result = data.xpath('//a[@href="link4.html"]/text()').extract()
# 28 获取第五个<a>标签的href属性值
result = data.xpath('//li[5]/a/@href').extract()
# 了解 模糊查询
result = data.xpath('//li[contains(@class,"it")]').extract()
# 同时获取<li>标签的属性以及<a>标签的文本
# result = data.xpath('//li/@class|//a/text()').extract()

print(result)

3.如何选取多个标签?

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。(逻辑运算符)

总结

  1. xpath的概述XPath (XML Path Language),解析查找提取信息的语言
  2. xpath的节点关系:根节点,子节点,同级节点
  3. xpath的重点语法获取任意节点://
  4. xpath的重点语法根据属性获取节点:标签[@属性 = '值']
  5. xpath中获取节点的文本:text()
  6. xpath的获取节点属性值:@属性名
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ฅ˙Ꙫ˙ฅ599

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值