爬虫学习日记第四篇(xpath解析)
【摘要】
xpath概述
💥xpath解析原理: 1、实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中 2、调用etree对象中的xpath方法,结合这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
#返回结果为列表
[@属性="属性值"]不是必须的,它的作用是帮助过滤相同的标签
/表示一个层级,也表示根节点
//表示可以跨过多个层级
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
这里拿我很久以前写的一个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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
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')
#返回结果['#']
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
一定要看下面的例子,才能更明白,这个部分并不困难。
感谢观看,如果有错误,还望指出。💦
视频学习链接,我是跟着这个视频学习的
文章来源: blog.csdn.net,作者:开心星人,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_55675216/article/details/122566102
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)