分享好友 最新动态首页 最新动态分类 切换频道
CDP与Selenium相结合——玩转网页端自动化数据采集/爬取程序
2024-12-26 22:16

Selenium

Selenium 是一款开源且可移植的自动化软件测试工具,专门用于测试网页端应用程序或者采集网页端数据。它能够在不同的浏览器和操作系统上运行,具有很强的跨平台能力。Selenium可以帮助测试人员更高效地自动化测试基于Web网页端的应用程序,也可以帮忙开发者方便地完成网页端数据的采集工作。

Chrome Dev Tools

Chrome Dev Tools 是直接内置于 Chrome 浏览器中的调试工具。它为开发人员提供了一整套用于检查、调试、分析和优化 Web 网页端应用程序的工具。下面举例讲述 Chrome Dev Tools 支持的一些功能

元素选项卡

元素选项卡可以显示当前页面的 DOM 树,使用者也可以通过该功能实时修改当前页面的 DOM 树。举例来讲,我们现在想修改百度搜索按钮背景颜色成红色,我们就可以通过元素选项卡来完成。我们在元素选项卡中选中搜索框的按钮并且将 background-color 样式设置为红色即可,下方截图是实现的效果。

控制台选项卡

控制台选项卡类似于交互式的终端,我们可以在这里看到JavaScript代码打印的日志信息,方便我们定位问题,也可以在这里输入 JavaScript 代码,并且可以让这些代码实时生效,甚至改变原有网页的行为。例如,我们打开某个网站的登录页面并且在控制台选项卡中输入如下的代码

 
 
源代码选项卡

源代码选项卡可以查看完整的网页源代码,对源代码进行单步调试,观察代码的调用堆栈,也可以动态修改代码变量。为了能够更加清晰地说明源代码选项卡的作用,我简单编写了一个 HTML 页面。其内容如下所示

 
 
  1. 文件导航窗口:文件导航窗口中列举了整个网页相关的文件列表和路径,主要包括:HTML,JavaScript,CSS 和浏览器扩展插件等。

  2. 代码编辑窗口:源代码选项卡的第二个窗口是一个源代码编辑器,我们可以在这里查看和编辑各个文件的源代码,也可以在这里设置调试断点。

  3. 调试信息窗口:调试信息窗口展示了当前设置的断点信息和调用堆栈信息等。

我们有两种方法可以给当前页面的代码设置断点。

设置断点的第一种方法是在代码编辑窗口中点击对应的行号设置断点。具体视图如下所示

网络选项卡

通过网络选项卡,我们可以观察到网络流量的情况以及网络的请求和响应。对于爬虫开发者来说,最感兴趣的内容应该是各个文件的具体请求和响应信息。通过网络选项卡,我们会看到浏览器实时发送和接收的每个请求。通过点击每个请求,我们可以可以访问请求和响应的具体信息,cookie 和耗时等。

Chrome DevTools Protocol (CDP)

Chrome DevTools Protocol(CDP)是一套用于与基于Chromium内核浏览器进行通信的 API。它允许开发者通过发送命令和接收事件来与浏览器进行交互,以实现自动化测试、性能分析、调试等功能。CDP 在自动化测试、前端开发和爬虫程序开发等很多领域都发挥着重要的作用。

Chrome 浏览器的开发者将 Chrome DevTools 的功能领域划分为大约50个,每个版本的浏览器支持的功能领域可能会有些许差异。具体的功能领域划分我们可以通过官方文档链接进行查询,https://chromedevtools.github.io/devtools-protocol/。打开浏览器的开发者工具,我们可以开启实验特性下的协议监视器(protocol monitor)功能来查看当前浏览器页面发送的所有 CDP 指令。

Selenium与CDP协议结合使用

在 Selenium 4 框架中,提供了两种与 Chrome Devtools 进行交互的方法,分别是 DevTools.send 方法和 ChromiumDriver.executeCdpCommand 方法。

DevTools 是 Selenium 框架为 CDP 协议编写的一个封装类,它内置了部分 CDP 协议指令。

ChromiumDriver 对象中的 executeCdpCommand 方法则是根据 CDP 协议指令的定义采用更加原始的方式直接向 Chrome 浏览器内核发送 CDP 协议指令。两种发送指令方式的差异性如下图所示

示例1:捕获网络请求数据和网络响应数据

首先,我们来看一看如何使用 DevTools 对象来操作 CDP 协议指令。假设,我们在进行数据采集的时候,希望能够实时记录某一个网站针对特定 URL 的请求数据和响应数据。这个时候,我们可以利用 CDP 协议中的 Network 领域功能来跟踪页面的相关网络活动。要实现捕获网络请求和响应数据的功能,我们首先需要使用 Network.enable 方法来开启页面的网络活动追踪功能,然后监听 Network.requestWillBeSent 事件和 Network.responseReceived 事件。具体代码示例如下所示

 
 
示例2:打印网页内容

在第二个示例中,我们采用 executeCdpCommand 方法来直接发送 CDP 指令给浏览器内核。假设我们现在使用的是 v96 版本的 Chrome 浏览器,与该版本浏览器对应的 Selenium DevTools 包装类中并不支持 Page.printToPDF 的 CDP 协议指令,这样我们就不得不使用 executeCdpCommand 方法来直接发送 CDP 协议指令。

首先,我们打开链接:https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF,查看具体的 Page.printToPDF 指令定义。

了解完指令定义之后,我们就可以按照指令定义来编写相关代码,具体代码示例如下所示

 

上述代码执行之后,我们会得到一个 PDF 文件。

总结

本文介绍了有关 Chrome DevTools,Chrome DevTools Protocol 以及 Selenium 与 CDP 协议结合应用的一些基本知识。希望它可以您在编写自动化爬取/采集程序的时候帮助到您。

另外,更多有关网络数据采集爬取、验证码识别和逆向分析等相关知识,可以阅读我最近出版的《Java网络爬虫精解与实践》一书,该书知识结构紧凑,内容覆盖全面。

最新文章
阿里云续费优惠全攻略:如何最大化节省云服务器成本
通用型(ECS g系列):适用于中小企业网站、Web应用、开发和测试环境等,平衡了计算、内存和网络资源。计算型(ECS c系列):高性能计算密集型应用的首选,如高性能科学计算、基因测序、大数据分析等。内存型(ECS r系列):适用于需要大量
泰安岱岳区NOIP信息学奥赛培训学校咨询热线:   在线咨询: 点击交谈
课程单价:270元课时数:120节课程内容:UARO编码机器人是乐博乐博的机器人课程体系,针对儿童开设。学习机器人从制作到控制的过程,是一个综合教育过程。孩子可以按照自己的想象,设计组装机器人,给机器人编排适当的程序,通过这种教育能
数万人选择的浏览器,它凭什么比 Chrome 更优秀
谷歌 Chrome 浏览器公认的好用,因为它简洁、性能强悍且支持丰富的拓展程序。但 Chrome 浏览器的好口碑仅限于桌面,移动端体验只能说勉强。Why?不支持拓展就意味着你必须忍受混乱排版、网页限制和满天乱飞的广告!正当我们以为谷歌永远不
虚拟信用卡wildcard新手教程(保姆级)
(小白10分钟注册ChatGPT并升级)全球公认的最强AI——ChatGPT plus,由于各种原因,无法在中国大陆使用。今天发现一款好玩的东西:虚拟信用卡wildcard。申请了wildcard后,可以免费申请ChatGPT账号,还能用它升级ChatGPT账号到plus。不用
重庆中考排名,重庆中考排名一览表
重庆中考排名,重庆中考排名一览表重庆中考排名不仅是衡量学生学业水平的一个重要指标,更是决定学生未来升学机会的关键参考。本文将为你详细解析重庆中考排名的意义,如何通过排名来选择适合自己的学校,以及如何利用排名优势规划未来的学
明天什么天气有雨吗
什么样的天气会下雨?1、日落乌云涨,半夜听雨响。2、云自东北起,必有风和雨。3、日出红云升,劝君莫远行;4、早上红云照,不是大风便是雹 5、早起浮云走,中午晒死狗 6、满天乱飞云,雨雪下不停。(恶劣天气下的碎雨云)7、鱼鳞云,不雨也
百度推广哪家做的比较好?百度推广公司排名TOP5公布
百度推广是企业提升品牌知名度和拓展业务的重要手段之一。然而,不同的公司在推广策略、技术实力、服务质量等方面存在差异。为了帮助大家更好地选择百度推广公司,我们经过深入调研和分析,评选出了百度推广公司排名 TOP5。这些公司在行业
Scrapy框架:Python爬虫开发快速入门与初试
一、Scrapy框架概述 Scrapy作为一个高效的爬虫框架,确实能够解决你提到的原生爬虫面临的一些问题,并且具有一些独特的特点。下面我们来一一对应你提到的问题,看看Scrapy是如何应对的: 1. 分布式爬虫 Scrapy的应
百度诉奇虎不正当竞争正式立案 爬虫协议引业内探讨
  据经济之声《天下公司》报道,在奇虎360进军搜索市场之后,百度和奇虎两家公司之间的关系似乎更加剑拔弩张。百度认为,奇虎抓取复制自己网站的内容,违背了国际通行的行业规则爬虫协议,起诉奇虎360不正当竞争,索赔1亿元。目前,北京
用AI生成超逼真美女写真,揭秘最强AI工具与实用教程!
在这个数字化飞速发展的时代,AI技术为我们的生活带来了诸多便利,而AI生成美女写真正是其中一项备受瞩目的应用。想象一下,你只需轻轻一按,就能生成一张超逼真的美女写真,简直如同去了专属摄影棚,省时又省力,不再需要繁琐的拍摄和后期
相关文章
推荐文章
发表评论
0评