Python网络爬虫实战——实验5:Python爬虫之selenium动态数据采集实战

【实验内容】

本实验主要介绍和使用selenium库在js动态加载网页中数据采集的作用。

【实验目的】

1、理解动态加载网页的概念
2、学习Selenium库基本使用
3、掌握动态加载数据采集流程

【实验步骤】

步骤1理解动态加载网页
步骤2学习使用Selenium库
步骤3 采集河北政府采购网

步骤1:理解动态加载网页
动态加载网页是指在页面初次加载完成后,通过JavaScript等前端技术,根据用户的交互或其他触发条件,向服务器请求额外的数据并将其加载到已有页面中,而无需刷新整个页面。这种技术使得网页能够更快地响应用户操作,提升用户体验,同时避免了每次交互都重新加载整个页面的开销。以下是一些常见的动态加载网页的情形:
异步加载: 通过AJAX(Asynchronous JavaScript and XML)等技术,网页可以在后台异步加载数据,然后使用JavaScript更新页面的部分内容,而无需重新加载整个页面。
无限滚动: 在一些网页中,当用户滚动页面到底部时,会自动加载更多的内容,实现无限滚动效果。
实时更新: 一些网页需要实时显示最新的信息,例如社交媒体的实时更新流。在这里插入图片描述上图站长之家就是使用js动态渲染网页,在传统的静态网页爬取中,爬虫工具通常只能获取页面初次加载时的静态内容,而无法直接获取动态加载的数据。

步骤2:学习Selenium库基本使用
(1) 介绍
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。selenium本质上是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等…进而拿到网页渲染之后的结果,可支持多种浏览器
(2) 安装Selenium库:
/==============/
(3) 下载浏览器驱动
根据使用的浏览器下载对应版本的浏览器驱动,例如Chrome浏览器需要下载ChromeDriver。将驱动文件保存在一个合适的位置。
下载地址:
/===================================/
在这里插入图片描述(4) 初始化Selenium WebDriver
在Python脚本中使用Selenium库,初始化一个WebDriver,指定浏览器类型和驱动路径。
-***************************************************************
(5) 访问目标网址
使用WebDriver访问需要采集数据的目标网页。
-***************************************************************
(6) 模拟用户行为
/======================================================/
(7) 等待数据加载
由于动态加载可能需要一些时间,需要使用等待机制确保数据加载完成。
-****************************************************
(8) 提取数据
一旦数据加载完成,使用Selenium提取目标数据。
-****************************************************
(9) 关闭浏览器在这里插入图片描述
步骤3 采集河北政府采购网
(1) 分析页面
主页面
地址:http://www.ccgp-hebei.gov.cn/province/cggg/zhbgg/index_1.html


进入主页面后,摁F12打开开发者工具,点击Doc输入关键字学,点击检索按钮,可以出现如上图4步骤所示的接口,preview中可以查看到该接口的返回值。

子页面
/=======================================================================================================/在这里插入图片描述
(2) 解析出子页面信息
导入第三方模块:
在这里插入图片描述
/==================================================================================================/


/==================================================================================================/

(3) 获取子页面源代码
导入模块
-***********************************************************************
首先初始化一个Chrome(options=chrome_options) ,创建了一个新的Chrome WebDriver实例,传入配置参数。


/==================================================================================================================================================/
-******************************************************************
/===============================================================================================================================================/
整个操作是在一个try-except-finally块中进行的,如果出现异常(比如加载超时),会打印一条消息,并在 finally 块中关闭 WebDriver,确保资源被正确释放。

(4) 解析子页面数据在这里插入图片描述下面代码是解析子页面主要标信息字段的代码,使用xpath语法对数据进行提取。
/===================================================================================================================================================/
-****************************************************************
提取的数据字段最终保存为如下图所示。
-*************************************************************************
(5) 保存为json文件
-*******************************************************************
使用with语句打开文件 “hebei -zhong.json”,打开模式为追加模式 a,以UTF-8编码。将JSON格式的字符串 message 写入文件,并添加一个逗号和换行符,以便在后续追加新的JSON数据,这有助于生成一个包含多个JSON对象的有效JSON数组。

生成单个字段完整示例如下:
-*************************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/652701.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python初学者学习记录——python基础综合案例:数据可视化——地图可视化

一、基础地图使用 1、基础地图演示 2、基础地图演示——视觉映射器 from pyecharts.charts import Map from pyecharts.options import VisualMapOpts# 准备地图对象 map Map() # 准备数据 data [("北京市", 99),("上海市", 199),("湖南省", 2…

1 月 28日算法练习-前缀和

小郑的蓝桥平衡串 思路:把 L 看成 1,Q 看成 -1,利用前缀和来得到输入串的前缀子串中LQ 的和,利用前缀和差的性质得到子串,通过枚举看它是否平衡。 将L看做1,Q看做-1,只有当某个区间…

如何快速上手一个vue框架

安装nvm 下载nvm-setup.zip: https://github.com/coreybutler/nvm-windows/releases 解压安装nvm: 创建两个文件夹,一个是nvm的安装位置,另一个是node.js的下载位置。不需要配置环境变量和修改setting文件了 检查nvm是否安装成功…

不常见知识点汇总

目录 1.关于输入流(cin)1.1 cin.fail()1.2 cin.clear()1.3 cin.ignore() 随时补充!!! 1.关于输入流(cin) 问题描述: int input 0; cin >> input; while (cin.fail()) {cin.…

Linux 增加 SWAP 空间

一、需求 通过阿里云启动项目时,使用Vuepress build编译静态页面时内存需要800MB,导致内存不够,因此考虑使用swap方式,置换一些内存资源存放swap磁盘。 [rootxxx myblog]# npm run docs:dev> myblog1.0.0 docs:dev > vuep…

全角色服务、全场景支撑、全业务应用的新一代智慧教室

新一代智慧教室以“数智化助力高质量人才培养”为核心目标,以AI赋能的智能硬件为基础构建多形态智慧教学环境,以中台为支撑实现数据、设备、系统、业务的互联互通、开放共享,以平台全面覆盖教学应用,采集、汇聚、挖掘、分析课前课…

【解决】IntelliJ IDEA 重命名 Shift + F6 失效

IntelliJ IDEA 重命名 Shift F6 失效 问题解决 问题 Idea 重命名 Shift F6 ,一直没反应 解决 调查发现原因是微软新版的输入法冲突了。需要设置【使用以前版本的微软拼音输入法】解决兼容性。 设置 -> 时间和语言 -> 区域 -> 语言选项 -> 键盘选项…

公众号迁移公证书模板在哪里下载?

公众号迁移有什么作用?只能变更主体吗?公众号迁移的作用可不止变更主体这一个哦,它还可以把个人公众号变成企业公众号,或者把服务号变成订阅号,甚至还能开通留言功能。不过要注意,现在订阅号已经不能变成服…

软考计算题注意事项总结

1、沟通渠道中,N涉及多少人?是有所增加还是增至多少人? 2、在EMV中,关注的是成本还是收益?若是考虑成本和时间,则选择较小的方案;若是关注收益,则选择较大的方案。 3、在PERT中&am…

什么是数据库设计?基本步骤有哪些?

数据库设计结构图 实线代表输入,虚线代表输出,每个节点的输出作为下一个节点的输入。 基本步骤 1.需求分析阶段 数据需求分析是在项目确定之后,用户和设计人员对数据库应用系统所要涉及的内容(数据)和功能&#xff0…

JSP在线阅读系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc

一、源码特点 JSP 小说在线阅读系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库 ,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为SQLServer2008&#…

安装 java 的 JDK

前几天重装系统以后想起来要重装 java 的JDK 安装地址 Windows 下的 JDK 数据包有三种可选的下载:Windows x64 Compressed Archive、Windows x64 Installer 和 Windows x64 MSI Installer。其中,前者为 JDK 的免安装版本,后两者均为 JDK 的离…

数仓治理-计算资源治理

注:文章参考: 数据治理实践 | 网易某业务线的计算资源治理从计算资源治理实践出发,带大家清楚认识计算资源治理到底该如何进行,并如何应用到其他项目中https://mp.weixin.qq.com/s/w6d5zhDaaavNhW_DMEkPsQ 目录 一、计算资源治理的背景 二…

༺༽༾ཊ—Unity之-04-工厂方法模式—ཏ༿༼༻

首先创建一个项目, 在这个初始界面我们需要做一些准备工作, 建基础通用文件夹, 创建一个Plane 重置后 缩放100倍 加一个颜色, 任务:使用工厂方法模式 创建 飞船模型, 首先资源商店下载飞船模型&#xff0c…

2024年1月的论文推荐

又到月底了,在月初推荐论文的基础上又整理了10篇推荐阅读的论文 1、MosaicBERT https://mosaicbert.github.io/ 一种用于快速预训练的双向编码器。MosaicBERT是针对快速预训练优化的自定义BERT架构。主要架构修改:FlashAttention, ALiBi,门控线性单元…

outlook如何群发邮件?外贸邮件群发教程?

outlook邮箱群发邮件方法?outlook怎么设置邮件群发? 如果你正在使用Outlook,那么你一定想要知道如何有效地群发邮件。Outlook作为微软办公套件的一部分,不仅功能强大,而且操作简便。下面,蜂邮EDM就来详细讲…

Redis的应用问题

目录 一、缓存穿透 问题描述 解决方案 缓存击穿 问题描述 解决方案 缓存雪崩 问题描述 解决方案 二、分布式锁 问题描述 解/决方案:使用redis实现分布式锁 优化之设置锁的过期时间 优化之UUID防误删 LUA脚本保证删除的原子性 LUA脚本 LUA脚本在Red…

4-4 D. 银行排队问题之单队列多窗口加VIP服务

题目描述 假设银行有K个窗口提供服务,窗口前设一条黄线,所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时,下一位顾客即去该窗口处理事务。当有多个窗口可选择时,假设顾客总是选择编号最小的窗口。 有些银行会给VIP客户以…

linux 下scrcpy 手机投屏到电脑,QT+ffmpeg 获取视频流,处理等等

linux 下scrcpy 手机投屏到电脑,QT+ffmpeg 获取视频流,处理 1 安装 scrcpy 地址 https://github.com/Genymobile/scrcpy 转到 relese 下载 我这里下载的是linux系统 v2.3.1 版本 scrcpy-2.3.1.tar.gz 下载 scrcpy-server v2.3.1 版本 scrcpy-server-v2.3.1 解压scrcpy-2.3…

【小呆的力学笔记】弹塑性力学的初步认知二:应力应变分析(2)

文章目录 1.4 主应力空间、八面体应力1.5 应变分析1.6 特殊应力、应变定义 1.4 主应力空间、八面体应力 一点的应力状态不论如何变化,其主应力和主方向一致的话,该点的应力状态就是唯一确定的。因此,我们用主应力方向建立一个三维坐标系来描…