〖Python网络爬虫实战⑰〗- 网页解析利器parsel实战
- 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
python项目实战
Python编程基础教程系列(零基础小白搬砖逆袭)
- 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)。
- 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。
最近更新
〖Python网络爬虫实战⑯〗- 网页解析利器parsel
🌟 上节回顾
我们在上一节我们学习了parsel的基本语法,我们知道其可以使用xpath和css还有正则表达式。parsel 是一个融合了 XPath、CSS Selector 和正则表达式的提取库,功能强大又灵活。
⭐️网页解析利器parsel实战
我们以实际的案例,来具体了解学习其功能。我们在这里重点讲解其两种方式。一个是XPATH,一个是CSS。我们以某网为例,获取其新闻标题。
🌟 parsel简介
Parsel是一个用于解析JSON数据的Python库。它提供了一个简单易用的API,可以轻松地从JSON文件或字符串中解析数据。可以对 HTML 和 XML 进行解析,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。功能灵活而又强大。
🌟发送请求
我们先确定目标网址,我们为了让新手更好的学习,我们这里以中国新闻网为例,不讲太复杂的案例。如果,想更好的提升自己,可以尝试学习我之前发的Python项目实战——外汇牌价(附源码)。这篇文章使用的方法也是parsel。
我们发送请求,获取数据。我们相信大家这里的代码都会写了。
import parsel
import requestsurl = 'https://www.xxxxx.com/importnews.html'responses = requests.get(url)
responses.encoding=responses.apparent_encoding
print(responses.text)
我们使用requests.get()函数来发送HTTP请求,并将响应存储在responses变量中。在这个例子中,我们将响应的文本内容存储在responses.text变量中。
🌟解析数据
我们获取到了网页源代码之后,我们使用parsel方法对其解析,处理网页源代码。
selector = parsel.Selector(responses.text)
我们使用 parsel 库的 Selector 对象来选择 responses.text 中的特定元素。
我们使用开发者工具,观察标题在哪个标签位置里面。

由上图,我们可以看到,我们标题信息就在<li>标签里面。我们可以提取<li>标签里面所有的内容。在这里,我们只获取新闻的标题内容。下面我们将用两种方式获取。
✨XPATH方式

我们很容易获取到了标签所在的位置,大家不会写的话,可以右击copy—xpath。我们来写代码。
titles = selector.xpath('/html/body/div[4]/div[1]/div[2]/ul/li/div[2]/a/text()').getall()
xpath 方法是 Selector 对象中的一个方法,用于指定 XPath 表达式,它可以用于选择 HTML 元素。在这个例子中,我们使用 xpath 方法来选择 /html/body/div[4]/div[1]/div[2]/ul/li/div[2]/a/text() 表达式指定的所有 <a> 元素,并将它们的文本内容作为列表返回。
我们这里会得到一个所有新闻的标题列表,我们for遍历一下。我们看看效果。

✨CSS方法
我们刚刚用了XPATH的方法获取新闻的标题,我们接下来,我们使用CSS的方法来获取标题。

我们这里,直接写代码了。
titles = selector.css('ul > li > div.dd_bt a::text').getall()
css 方法是 Selector 对象中的一个方法,用于指定 CSS 属性,它可以用于选择 HTML 元素。在这个例子中,我们使用 css 方法来选择 ul > li > div.dd_bt a 表达式指定的所有 <a> 元素的文本,并将它们的样式作为列表返回。
我们CSS语法还可以这样写。
titles = selector.css('.dd_bt a::text').getall()
css 方法是 Selector 对象中的一个方法,用于指定 CSS 属性,它可以用于选择 HTML 元素。在这个例子中,我们使用 css 方法来选择 .dd_bt a::text 表达式指定的所有 <a> 元素,并将它们的文本内容作为列表返回。

我们会发现是一样的效果,不管怎么样,大家都要会一种方法。
🌟总结
在parsel实战中,我完成了一个使用 parsel 库的选择器来选择 特定元素的内容。在这个实战中,我使用了 xpath 和 css 方法来指定选择的元素的位置和样式,使用 Selector 对象来指定选择的元素,并使用 getall 方法来获取选择的所有元素。
首先,我们需要更好地理解 xpath 和 css 方法的使用,以便更准确地选择元素。其次,我们需要更好地理解 Selector 对象的使用,以便更准确地指定选择的元素。

相关文章:
〖Python网络爬虫实战⑰〗- 网页解析利器parsel实战
订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付…...
中电金信:生成式AI热潮下,文本智能走向何方?
突破通用人工智能场景,生成式AI正在向全行业应用进攻。 一个脑筋急转弯,几个月前ChatGPT是这样回答的: 然而,仅仅几个月的迭代,它的回答却让人出乎意料。 看似调侃的对比背后实则是无数次模型训练的支撑。基于数据的激…...
探索Linux设备树:硬件描述与驱动程序的桥梁
目录标题 引言:Linux设备树简介 | Introduction: Linux Device Tree Overviewa. 设备树的背景与发展 | Background and Development of Device Treeb. 设备树的作用与意义 | The Role and Significance of Device Tree 设备树语法与结构 | Device Tree Syntax and S…...
UNION ALL用法 以及 UNION ALL和UNION的区别
部分参考自文章: https://blog.csdn.net/a200822146085/article/details/119545374(CC 4.0 BY-SA版权协议)CSDN「我心依依旧」 https://www.1keydata.com/cn/sql/sql-unionall.php SQL Union All SQL指令 UNION ALL用法 UNION ALL 这个指令的目的也是要将两个 SQL 语…...
Ubuntu Linux操作
引言 晚上上课发现桌子上遗留了这本书,水课就看了看学习下,以下内容直接总结知识点 磁盘内存解析 (1)硬盘有数个盘片,每个盘片两个面,每个面一个磁头。 (2)盘片被划分为多个扇形区域即扇区。 (3)同一盘片不同半径的同心圆为磁道。 (4)不同盘片相同半径…...
MongoDB常用语句(CURD)
文章目录 一、数据库操作二、集合操作三、文档操作3.1 插入文档3.2 查询文档3.3 更新文档3.4 删除文档 四、安全认证4.1 创建管理员账号4.2 创建应用数据库用户4.3 启动和连接 (校验方式) 提示:以下是本篇文章正文内容,MongoDB 系列学习将会持续更新 一…...
一篇文章让你彻底学会--节流(并且自己可以手写)
Hi,有的小伙伴们在面试的时候会被要求手写节流函数,很多都被难着了吧,宝贝,那你你没有理解节流函数。 今天,就让我带你攻克它! 1.节流 单位时间内,事件触发,最多只执行一次事件回调。 人话:说…...
C++ 形参是类的指针 class * 通过new的方式创建对象
当你在C中使用类指针(class *)作为函数的形参,并通过 new 关键字创建对象时,这种用法确实会改变类对象的值。原因是你通过指针传递了对象的内存地址,而不是传递对象本身。这意味着在函数内部对对象的任何修改都会直接影…...
手把手教你将项目部署到服务器!
一、导入centos7虚拟机: 打开VMWare,点击“打开虚拟机”,选择centos7.ova之后,选择存储路径: 点击导入: 选择“不再显示此消息”,点击“重试”按钮: 点击“编辑虚拟机设置”&#x…...
OpenHarmony应用开发-ArkUI方舟开发框架简析
方舟开发框架(简称ArkUI)为OpenHarmony应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界…...
【Transformer系列(4)】Transformer模型结构超详细解读
前言 前一篇我们一起读了Transformer的论文《Attention Is All You Need》,不知道大家是否真的理解这个传说中的神(反正俺是没有~) 这两天我又看了一些视频讲解,感谢各位大佬的解读,让我通透了不少。 这篇文章就和…...
Idea启动运行报错:Error:java: 无效的源发行版: 13
最近在做Springboot项目时,常常出现上述错误,小编也不知道怎么回事,到网上找了这个方面的解决办法,但是却发现根本解决不了,最终通过小编多次尝试,终于发现,为什么会报这个错误。(应该是Java版本…...
【元分析研究方法】学习笔记1.形成问题
步骤1 形成问题 该步骤的作用该步骤中需要注意的问题该步骤中部分知识点我的收获 参考来源:库珀 (Cooper, H. M. )., 李超平, & 张昱城. (2020). 元分析研究方法: A step-by step approach. 中国人民大学出版社. 这章内容很简单:①变量的刻画&#x…...
2023年3月 青少年软件编程(Python) 等级考试试卷(五级)
一、单选题(共25题,共50分) 1.已知一个列表lst [2,3,4,5,6],lst.append(20),print(lst)的结果是?(C)(2分) A.[10,2,3,4,5,6,20] B.[20,2,10,3,4,5,6] C.[2,3,4,5,6,20] D.[2,3,4,5,…...
必须要知道的hive调优知识(上)
Hive数据倾斜以及解决方案 1、什么是数据倾斜 数据倾斜主要表现在,map/reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长,这是因为某一个key的条数比其…...
什么是Cache Aside Pattern与延迟双删
Cache Aside Pattern是一种常用的缓存设计模式,用于在应用程序中使用缓存提高系统性能的同时,避免缓存与数据库数据不一致的情况出现。延迟双删是Cache Aside Pattern的一种优化,可以进一步提高系统性能。 以下是关于Cache Aside Pattern和延…...
frp 流量特征
frp 流量特征 非常明显的明文流量特征...
Unity --- UGUI(Unity Graphical user interface)--- Canvas画布
1.UI --- User Interface --- 使用者与机器之间的交互界面 1.所谓的自适应系统指的是分辨率的适应: 比如在一个分辨率下做的UI放到另一个分辨率下显示时,如果没有自适应系统的话就会导致UI过大,过小,被辟成一半等等情况ÿ…...
c++积累6-内联函数
1、说明 内联函数是c为提高程序运行速度所做的一项改进。 2、常规函数运行 编译的可执行程序:由一组机器语言指令组成。 程序执行: 1、操作系统将这些指令载入到内存,每条指令都有一个特定的内存地址 2、计算机逐步执行这些指令 3、如果有…...
ESP32学习笔记13-MCPWM主要用于无刷电机驱动
16.MCPWM 16.1概述 ESP32 有两个 MCPWM 单元,可用于控制不同类型的电机。每个单元都有三对PWM输出 每个 A/B 对可由三个定时器定时器 0、1 和 2 中的任何一个计时。 同一定时器可用于为多对PWM输出提供时钟。 每个单元还能够收集输入,例如,检测电机过电流或过电压,以及获得…...
告别循环中的Thread.sleep():从IDEA告警到高效定时任务的最佳实践
1. 为什么Thread.sleep()在循环中是个危险信号? 第一次在IDEA里看到"Call to Thread.sleep() in a loop, probably busy-waiting"这个黄色警告时,我和大多数开发者一样不以为然——毕竟这个写法在教科书和早期项目中太常见了。直到有次我们的A…...
交通一线运维优选:Smart-S3 多模光时域反射仪
铁路、高速公路现场运维常需轻便、快速、易用的光纤检测工具,Smart-S3 多模光时域反射仪以超轻机身和稳定性能,成为一线巡检与抢修的理想选择。Smart-S3 多模光时域反射仪是一款便携式光纤测试仪表,可精准测量光缆长度、损耗、故障点位置&…...
仅0.3%用户掌握的胶片叙事技巧:用Midjourney实现“过期胶卷”时间衰减效果(含Exif元数据欺骗指令集)
更多请点击: https://intelliparadigm.com 第一章:胶片叙事与数字时代的时间诗学 胶片影像的物理性——帧率、显影时长、机械快门延时——曾将时间锚定为可触摸的物质存在;而数字媒介则以纳秒级采样、无损复制与非线性剪辑,将时间…...
英雄联盟智能助手Seraphine:免费开源的战绩查询与BP辅助神器
英雄联盟智能助手Seraphine:免费开源的战绩查询与BP辅助神器 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 还在为错过对局接受而懊恼吗?还在BP阶段犹豫不决错失最佳英雄选择吗&#…...
stm32 FOC从学习开发(七)SVPWM算法MATLAB仿真进阶:从模型搭建到代码生成
1. SVPWM算法仿真与代码生成全流程 搞电机控制的朋友都知道,SVPWM(空间矢量脉宽调制)是FOC(磁场定向控制)的核心算法之一。前几期我们聊过Clark变换、Park变换,也讲过SVPWM的基本原理,今天咱们就…...
如何用Python在5分钟内自动解析简历关键信息?PyResParser终极指南
如何用Python在5分钟内自动解析简历关键信息?PyResParser终极指南 【免费下载链接】pyresparser A simple resume parser used for extracting information from resumes 项目地址: https://gitcode.com/gh_mirrors/py/pyresparser 在招聘高峰期,…...
Sunshine游戏串流终极指南:5步搭建你的私人云游戏服务器
Sunshine游戏串流终极指南:5步搭建你的私人云游戏服务器 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款功能强大的开源游戏串流服务器,专为…...
利用 Taotoken 多模型聚合能力优化内容生成流水线的实践
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用 Taotoken 多模型聚合能力优化内容生成流水线的实践 对于内容创作团队而言,不同题材和创作阶段往往需要不同特长的…...
三步搞定Windows磁盘空间不足:WinDirStat终极清理方案
三步搞定Windows磁盘空间不足:WinDirStat终极清理方案 【免费下载链接】windirstat WinDirStat is a disk usage statistics viewer and cleanup tool for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/wi/windirstat 你是否经常遇到Windows…...
微信小程序wx.navigateTo传参实战:从基础到动态数据绑定
1. 微信小程序页面跳转基础入门 第一次接触微信小程序开发时,页面跳转是最基础也最常用的功能之一。wx.navigateTo这个API就像是一座连接不同页面的桥梁,让用户能在小程序的不同功能模块间自由穿梭。想象一下,你正在开发一个电商小程序&…...
