selenium自动化测试-获取黄金实时价格

news2024/11/19 20:38:00

最近黄金比较火爆,想要获取黄金实时价格,方便后续监控预警价格,一般实时刷新的网页数据都是动态加载的,需要用到selenium自动化测试获取动态页面数据。

昨天学会了获取动态网页小说内容,同理也可以获取动态网页的黄金实时价格。

第一步:先确定目标网址

网上随便百度一下黄金实时价格: 网址地址:'https://gushitong.baidu.com/futures/ab-AU888'

第二步:确定章节目录和内容元素坐标

通过谷歌浏览器F12调试功能可以很快的定位页面元素位置.

这次定位采用 full XPath 方式,因为该网站通过id或者class属性不好定位,而且采用 full XPath 方式更加方便简单,无需分析元素层级转换格式。
同时采用 selenium 自动化测试工具的浏览器驱动模块访问定位元素值,不再使用bs4库的方式转换取html的元素值。

比如:实时价格,full XPath 值:/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[1]

代码中元素定位取值如下:

# 实时价格,full xpath 定位
real_price_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[1]'
# 实时价格
real_price = driver.find_element(By.XPATH, real_price_xpath).text

想要获取其他页面元素值,依次类推即可。

第三步:编写代码

依旧采用拆分步骤细化功能模块封装方法编写代码,便于后续扩展功能模块,代码中缺少的封装方法代码,详情参考之前的《selenium自动化测试》文章。

requests_webdriver.py:

def spider_gold_price():
    '''
    @方法名称: 爬取黄金实时价格
    @中文注释: 爬取黄金实时价格
    @入参:
    @出参:
        @返回状态:
            @return 0 失败或异常
            @return 1 成功
        @返回错误码
        @返回错误信息
        @param rsp_dict dict 响应容器
    @作    者: PandaCode辉
    @创建时间: 2023-09-22
    @使用范例: spider_gold_price()
    '''

    try:
        # 返回容器初始化
        rsp_dict = {}
        # 爬取黄金实时价格,网址
        gold_url = 'https://gushitong.baidu.com/futures/ab-AU888'
        # 实时价格,full xpath 定位
        real_price_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[1]'
        # 涨跌百分比,full xpath 定位
        ud_percent_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[1]/div/span[4]'
        # 交易时间,full xpath 定位
        trans_datetime_xpath = '/html/body/div/div/div/div[1]/div[2]/div/div/div/div[2]/div[1]/div/div/div/div/div[2]/div[1]/div[2]/div[2]/span[2]'

        print('打开浏览器驱动')
        open_driver()

        # 打开网址网页
        print('打开网址网页')
        driver.get(gold_url)
        # 等待6秒启动完成
        driver.implicitly_wait(6)
        print('随机休眠')
        # 随机休眠 暂停0-2秒的整数秒
        time.sleep(random.randint(0, 2))

        # 实时价格
        real_price = driver.find_element(By.XPATH, real_price_xpath).text
        print('实时价格:' + str(real_price))
        rsp_dict["real_price"] = '实时价格:' + str(real_price)

        # 涨跌百分比
        ud_percent = driver.find_element(By.XPATH, ud_percent_xpath).text
        print('涨跌百分比:' + str(ud_percent))
        rsp_dict["ud_percent"] = '涨跌百分比:' + str(ud_percent)

        # UTC格式当前时区时间
        t = time.localtime()
        work_time = time.strftime("%Y-%m-%d %H:%M:%S", t)
        print('当前日期时间:' + str(work_time))
        now_year = str(work_time)[:4]
        # 交易时间
        trans_datetime = driver.find_element(By.XPATH, trans_datetime_xpath).text
        print('交易日期时间:' + str(now_year + '-' + trans_datetime))
        rsp_dict["trans_datetime"] = '交易日期时间:' + str(now_year + '-' + trans_datetime)

        print('随机休眠')
        # 休眠3秒
        time.sleep(3)
        print('关闭浏览器驱动')
        close_driver()

        # 返回容器
        return [1, '000000', '爬取实时黄金价格信息成功', [rsp_dict]]

    except Exception as e:
        print('关闭浏览器驱动')
        close_driver()
        print("爬取实时黄金价格信息异常," + str(e))
        return [0, '999999', "爬取实时黄金价格信息异常," + str(e), [None]]

第四步:运行测试效果

 -------------------------------------------end---------------------------------------

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

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

相关文章

头歌平台 | 逻辑函数及其描述工具logisim使用

文章目录 1、根据布尔表达式绘制电路2、根据真值表绘制电路3、根据简化真值表绘制电路4、根据波形图绘制电路5、根据卡诺图绘制电路 1、根据布尔表达式绘制电路 任务描述 本关任务:在Logisim中根据给定的布尔代数表达式(FABBCCA)绘制逻辑电路…

文案内容千篇一律,软文推广如何加深用户印象

随着互联网技术的发展,企业营销的方式逐渐转向软文推广,但是现在软文推广的内容同质化越来越严重,企业应该如何让自己的软文推广保持差异性,在用户心中留下独特的印象呢?下面就让媒介盒子告诉你。 一、 找出产品独特卖…

spring boot 时间格式化输出

目录标题 一、spring boot 序列化二、 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss")和JSONField(format "yyyy-MM-dd HH:mm:ss")区别三、在实体类中序列化时间(格式化输出)(一)使用JsonFormat(二…

程序员自由创业周记#12:999%

下载量涨了999% 在此之前,我的Apple开发账号上只有一个产品-学伟扫描,因为没有推广,只靠自然流量,每天的下载量寥寥无几,这种稳定无人问津的状态断断续续保持了4年。 之前的周记里介绍了最近在做创业的第二个项目-学伟…

27 WEB漏洞-XSS跨站之代码及httponly绕过

目录 HttpOnly安全过滤测试HttpOnly安全过滤绕过思路 演示案例:Xsslabs关卡代码过滤绕过测试 HttpOnly安全过滤测试 防止xss攻击,指的是攻击手法,并不是能防止XSS漏洞,httponly阻止的仅仅只是cookie httponly在相关的脚本都是支持…

AMEYA360 | 罗姆ROHM面向工业设备应用的产品目录上线

作为半导体和电子元器件制造商,罗姆集团自成立后60多年以来,一直秉持“质量第一”的企业目的,为消费电子设备和IT设备、汽车以及工业设备等多个领域源源不断地提供高品质、可信赖的产品。 随着“节能”和“小型化”需求的不断高涨&#xff0c…

PLC项目调试常见的8种错误类型

各种品牌PLC都具有自我诊断功能,但PLC修理的技巧在于,充分运用该功能进行分析,然后精确寻找问题所在。整理了当PLC呈现反常报警时,PLC修理人员需要了解的8种常见错误类型。 CPU反常 CPU反常报警时,应查看CPU单元衔接于…

Qt中使用图像格式对QPainter绘制文字影响

图 1 是 QImage::Format_RGB888绘制效果,图二是QImage::Format_RGB32绘制效果,可见在使用QImage::Format_RGB32进行绘制文字效果更好,从现象提示我们,对QPainter在QImage改善文字绘制效果不仅可以设置抗锯齿,图像保存格…

STC15F104W控制3个74HC595芯片输出数码管显示

一、74HC595脚位图及说明 管脚说明: 14脚:DS(SER),串行数据输入引脚 13脚:OE,输出使能控制脚,它是低电才使能输出,所以接GND 12脚:RCK(STCP&…

C语言每日一题(10):无人生还

文章主题:无人生还🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄&#x1f…

Mojo编程语言是AI人工智能的新的编程语言

Mojo是Chris Lattner的创业公司Modular开发的一种新的编程语言,旨在统一AI基建和异构计算。Mojo被认为是Python的超集,兼容Python生态,但添加了系统编程和编译期优化的特性,以提高性能和部署效率。Mojo基于MLIR,可以支…

RockTree TOKEN2049 Party爆火,一场千亿规模的“超级聚会”

今年 9 月 11 日至 17 日期间,在新加坡举办的 TOKEN2049 大会,成为了今年同类活动中规模最大、最火爆的一次 Web3 行业盛会。据悉,本届 TOKEN2049 迎来了来自 3,500 多个组织超 10,000 名与会者,并有一众重磅加密行业嘉宾出席会议…

Android 混淆使用及其字典混淆(Proguard)

1.使用背景 ProGuard能够通过压缩、优化、混淆、预检等操作,检测并删除未使用的类,字段,方法和属性,分析和优化字节码,使用简短无意义的名称来重命名类,字段和方法。从而使代码更小、更高效、更难进行逆向工程。 Android代码混淆…

实时数仓混沌演练实践

一、背景介绍 目前实时数仓提供的投放实时指标优先级别越来越重要,不再是单独的报表展示等功能,特别是提供给下游规则引擎的相关数据,直接对投放运营的广告投放产生直接影响,数据延迟或者异常均可能产生直接或者间接的资产损失。…

【项目总结】C++ 云盘

项目介绍 本项目是一款分布式云存储软件,旨在提供强大的文件存储和共享功能。 因为要运行高并发量的访问,所以进行了服务器的集群,也就是要有多台web服务器,每台web服务器中部署相同的程序,为了让这几台web服务器的负…

【VSCode 插件商城无法搜索到插件的解决方法】

背景 因为本地电脑安装的开发软件较多,导致电脑变得很卡,所有申请一个虚拟机作为开发机,安装完VScode之后发现无法搜索到插件,于是便想把本地电脑上VScode装好的插件复制到虚拟机上。 实现 VSCode 的插件存在 【C/用户/用户名/…

关于ubuntu设置sh文件开机自启动python3和sudo python3问题

关于ubuntu设置sh文件开机自启动python3和sudo python3问题 说明系统为 ubuntu22.04python是python3.10.12ros系统为ros2 humble 背景解决方法补充 说明 系统为 ubuntu22.04 python是python3.10.12 ros系统为ros2 humble 背景 将一个py文件设置为开机自启动,服…

如何对pdf文件进行压缩?

如何对pdf文件进行压缩?一般来说,PDF文件里面一般会包含大量的图像、文本和其他类型的独裁,这使得它们的文件大小相对于其他文档要大得多(其实主要是pdf文件里面包含的大量图片,尤其是高清拖)。由于pdf文件…

Tiny11:极限精简的Windows 11系统镜像,老旧电脑的福音(移除Windows11安装要求限制,且支持苹果ARM架构CPU,全版本资源下载)

文章目录 优点和适用场景系统下载系统版本说明系统安装Tiny11 设置安装简体中文语言方法Windows 11,作为微软最新一代操作系统,固然有其强大的功能和卓越的性能,但有时,更轻、更小、更快速的需求也在用户的考虑范围之内。这就是Tiny11存在的理由。Tiny11是基于Windows 11的…

【收藏】如何最快取得NISP二级和CISP

【收藏】如何最快取得NISP二级和CISP 👉今天小编来给大家讲解一下如何最快的取得NISP二级和CISP证书 ✅我们从如下几个方面为大家讲解: 🔺报名条件 🔺考试形式 🔺考试题型 🔺如何备考 🔺证书用途…