作者:亿达口香糖 | 来源:互联网 | 2023-09-25 08:07
介绍XPath是一种XML路径语言,被用于在XML文档中通过元素和属性进行导航安装pipinstalllxml使用html示例内容,下面的所有练习全都来自与此段示例
介绍
XPath是一种XML路径语言,被用于在XML文档中通过元素和属性进行导航
安装
pip install lxml
使用
html示例内容,下面的所有练习全都来自与此段示例
this is a text
this is a span
读取html内容
from lxml import etree
with open('test.html', 'r', encoding='utf-8') as fr:
html = fr.read()
et = etree.HTML(html)
下面就接着这个代码段往下写。
所有节点、父节点、子孙节点
所有节点是通过指定'//*'来获取,例如
et.xpath('//*')
返回如下:
[, , , , , , , , , , , , , , , , , ]
子孙结点是通过'//'来获取
# 获取所有的li节点
et.xpath('//li')
父节点是通过'..'来获取,有点像linux的..上级目录
et.xpath('//p/../@class')
结果为
['color1']
获取文本text()
res0 = et.xpath('//body/p/text()')
返回结果
['this is a text']
获取指定标签下的内容
res1 = et.xpath('//li[1]/a/text()')
print(res1)
返回结果
['北京']
指定具体的标签
res2 = et.xpath('//div/p/')
print(res2)
返回内容
[]
指定类选择器
res3 = et.xpath('//li/a[@class="color2"]/text()')
print(res3)
返回结果
['广州']
指定id选择器
res4 = et.xpath('//li/a[@id="color3"]/text()')
print(res4)
返回结果
['上海']
模糊匹配
res5 = et.xpath('//li/a[contains(@href, "http")]/text()')
print(res5)
返回结果
['西二旗']
指定某个属性的具体值
res6 = et.xpath('//li/a[@href="https://www.dogfei.cn"]/text()')
print(res6)
返回结果
['西二旗']
获取指定位置的内容
res7 = et.xpath('//li[last()]/a/text()')
print(res7)
返回结果
['西二旗']
也可以用[last() - 1]
还可以使用position()
res8 = et.xpath('//li[position() <3]/a/text()')
print(res8)
返回结果
['北京', '上海']
通过使用position()
可以获取到一组数据
通配符
res9 = et.xpath('//li/*/text()') # *也可以省略
print(res9)
返回结果
['北京', '上海', '广州', '西二旗']
指定所有属性
res10 = et.xpath('//li//a[@*]/text()')
print(res10)
返回结果
['北京', '上海', '广州', '西二旗']
使用./
再次查找
res11 = et.xpath('//li')
for i in res11:
r = i.xpath('./a/text()')[0]
print(r)
返回结果
北京
上海
广州
西二旗
实战案例
此案例简单来爬取豆瓣电影的top250,只拿第一页的数据,打印出排名和电影名,重点是来掌握xpath
的用法
豆瓣电影top250的访问地址为:https://movie.douban.com/top250
查看页面源代码或者浏览器f12
查看页面元素定位到标签位置,打开其中一段分析来看:
1 src="https://img.php1.cn/3cd4a/1eebe/cd5/45a090220e38e09d.webp"/>
欢迎各位朋友关注我的公众号,来一起学习进步哦
推荐阅读
-
文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ...
[详细]
蜡笔小新 2023-12-12 13:27:42
-
本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ...
[详细]
蜡笔小新 2023-12-13 17:39:50
-
-
本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ...
[详细]
蜡笔小新 2023-12-13 10:06:58
-
本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ...
[详细]
蜡笔小新 2023-12-10 17:50:06
-
本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ...
[详细]
蜡笔小新 2023-12-10 17:44:07
-
本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ...
[详细]
蜡笔小新 2023-12-14 18:24:10
-
在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ...
[详细]
蜡笔小新 2023-12-14 17:34:00
-
本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ...
[详细]
蜡笔小新 2023-12-14 17:15:19
-
本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ...
[详细]
蜡笔小新 2023-12-14 16:06:38
-
本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ...
[详细]
蜡笔小新 2023-12-13 10:58:55
-
本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ...
[详细]
蜡笔小新 2023-12-12 11:51:07
-
本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ...
[详细]
蜡笔小新 2023-12-11 20:23:23
-
本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ...
[详细]
蜡笔小新 2023-12-11 19:55:40
-
本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ...
[详细]
蜡笔小新 2023-12-11 09:19:45
-
本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ...
[详细]
蜡笔小新 2023-12-14 17:46:55
-