爬虫学习日记第四篇(xpath解析)

xpath概述

💥xpath解析原理:
1、实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中
2、调用etree对象中的xpath方法,结合这xpath表达式实现标签定位和内容的捕获

💦如何实例化一个etree对象:from lxml import etree
1、将本地的html文档中的源码数据加载到etree对象中:
etree.parse(filePath)
2、也可以将从互联网上获取的源码数据加载到该对象中
etree.HTML(‘page_text’)


xpath定位

获取文本:
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值2"]/……/text()
#返回结果为列表

获取属性值:
//标签1[@属性1="属性值1"]/标签2[@属性2="属性值2"]/……/@属性n
#返回结果为列表

[@属性="属性值"]不是必须的,它的作用是帮助过滤相同的标签

/表示一个层级,也表示根节点
//表示可以跨过多个层级

这里拿我很久以前写的一个html文件做下简单的示例

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="all">
    <div class="header_content">
        <div class="logo">
            <a href="#">
                <image src="images/微软.svg" height=54px width=137px>
            </a>
        </div>
        <div class="nav">
            <ul class="nav_left">
                <li><a href="#">Microsoft365</a></li>
                <li><a href="#">Office</a></li>
                <li><a href="#">Windows</a></li>
                <li><a href="#">Surface</a></li>
                <li><a href="#">Xbox</a></li>
                <li><a href="#">优惠</a></li>
                <li><a href="#">支持</a></li>
                <li class="nav_right"><a href="#">所有Microsoft</a></li>
            </ul>
        </div>
    </div>
    </div>
</body>
</html>
from lxml import etree
if __name__=="__main__":
    tree=etree.parse('exam.html')
    r0=tree.xpath('//ul/li/a/text()')
    r1=tree.xpath('//ul/li//text()')   # //跨越多级
    #r0、r1都为['Microsoft365', 'Office', 'Windows', 'Surface', 'Xbox', '优惠', '支持', '所有Microsoft']
	
	r2=tree.xpath('//ul/li[1]//text()')
	#返回结果['Microsoft365'] ,注意索引是从1开始的,而不是0
	
	r3=tree.xpath('//div[@class='logo']//image/@src')
	#返回结果['images/微软.svg']
	
	r4 = tree.xpath('//div[@class="nav"]//li[1]/a/@href')
	#返回结果['#']
    

一定要看下面的例子,才能更明白,这个部分并不困难。
感谢观看,如果有错误,还望指出。💦

视频学习链接,我是跟着这个视频学习的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

开心星人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值