selenium webdriver实战宝典 pdf_Selenium+webdriver爬虫技术实战之沃运维报表提取
Selenium+webdriver爬虫技术实战之沃运维报表提取
新乡网络管理中心:温宏光
在日常工作中,运维人员经常会面临各类报表、数据的提取工作,特别是监控人员,这种报表提取工作可能会更为频繁。如果我们要开发一些自动化运维项目,那么数据自动提取是首先要解决的问题。目前各类网管支撑系统大部分是Web方式,利用爬虫技术可以不用人工干预,自动从网站上获取想要的数据。
selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。下面以沃运维故障工单报表提取为例,简单介绍一下python+selenium+webdriver框架的基本操作。
一、 用户登陆
我们需要做的就是模拟用户登陆操作,找到页面元素,填入用户名和密码,然后点击登陆按钮。需要注意的是很多网站采取的iframe网页嵌套,如存在这种情况,需要先切换至网页元素所在的iframe上再进行定位。主要代码如下:
try:
browser.get("http://10.245.0.225/uf")
print("网站已连接")
except:
print("登陆页面加载超时")
iframe = browser.find_element_by_tag_name("iframe")
browser.switch_to.frame(iframe) #切换到元素所在的iframe
username = browser.find_element_by_id("username") #找到用户名输入框
username.send_keys("username") #输入用户名
passwd = browser.find_element_by_id("password") #找到密码输入框
passwd.send_keys("password") #输入密码
login_btn = browser.find_element_by_id("loginbtn") #找到登陆按钮
login_btn.click() #点击登陆按钮
二、 告警提取
成功登陆后打开故障管理页面,点击进入工单统计页面,输入开始时间和结束时间,生成报表
browser.get("http://10.245.0.225/uf/dashboard/htmlShowNew.jsp?isopennew=true&type=absolutePath&url=/EOM_FM_WEB//menu.jsp&path=%E7%94%9F%E4%BA%A7%E7%AE%A1%E7%90%86-%3E%E6%96%B0%E6%95%85%E9%9A%9C%E7%AE%A1%E7%90%86")
iframe = browser.find_element_by_tag_name("iframe")
browser.switch_to.frame(iframe)
for li in browser.find_elements_by_tag_name("li"):
if li.text == '省份工单统计(地市维度)':
li.click()
time.sleep(2)
iframe = browser.find_element_by_tag_name("iframe")
browser.switch_to.frame(iframe)
browser.find_element_by_id("startTime").clear()
browser.find_element_by_id("startTime").send_keys("2019-12-01 00:00:00")
browser.find_element_by_id("endTime").clear()
browser.find_element_by_id("endTime").send_keys("2019-12-03 00:00:00")
browser.find_element_by_tag_name("button").click()
三、 报表保存
打开新乡所有告警明细页面,导出报表
browser.get("http://10.245.0.225/REPORT_FM/base/outStatistics/MainInfoSF.jsp?type=%E6%96%B0%E4%B9%A1%E5%B8%82@@%E6%80%BB%E8%AE%A1@@ALL&startTime=2019-12-01%2000:00:00&endTime=2019-12-03%2000:00:00&detailMethod=queryDatasList")
time.sleep(2)
browser.find_elements_by_tag_name("li")[1].click()
time.sleep(1)
browser.find_element_by_xpath('//*[text()=" 导出全部数据"]').click()
time.sleep(2)
for li in browser.find_elements_by_tag_name("button"):
if li.text.find("导出")>0 :
li.click()
四、 结语
可以看出,selenium的工作方式其实很简单,就是找到你需要操作的控件,并对其进行操作,例如按钮点击、文本输入等。我们需要做的就是找到这些控件的标识,然后利用find_element函数进行定位,执行指定动作来达到我们的目的。其使用方便,可以比较轻松解决JavaScript动态数据提取问题,是爬取网站动态数据的重要手段之一。
selenium webdriver实战宝典 pdf_Selenium+webdriver爬虫技术实战之沃运维报表提取相关推荐
- 爬虫技术实战 | WooYun知识库
爬虫技术实战 | WooYun知识库 爬虫技术实战 大数据分析与机器学习领域Python兵器谱-大数据邦-微头条(wtoutiao.com) 大数据分析与机器学习领域Python兵器谱
- 网络回溯分析技术八大应用之运维评估 网络运维的真正价值
提示:<科来网络回溯分析系统>V4.0已经正式发布啦!详见科来软件官方网站 网络回溯分析技术八大应用之运维评估 网管人员最尴尬的地方在于,当你的 ...
- 运维工程师:如何利用AR技术减少舟车劳顿提升运维效率?
一名资深的运维工程师的特征是怎样的?身着衬衫或Polo衫,背负能放进一台笔记本电脑的双肩包,大概率戴着眼镜且一脸疲惫,但敲打代码排除故障时格外认真.此外他们一定拥有丰富的差旅经验,并且大概率拥有各家航 ...
- 电能管理系统运用互联网和大数据技术,为电力运维公司和售配电公司提供变电所运维云平
Acrel-3000WEB电能管理系统在扬州某年产3GW高性能太阳能光伏组件项目 安科瑞 崔远航 摘要:在信息时代,电力信息系统的应用促迚了电力企业的収展,增强了电力系统运行的安全性与稳定性,对满足用 ...
- python爬虫入门实战争胜法_Python爬虫入门实战之猫眼电影数据抓取(理论篇)
前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...
- Gdevops广州站:跟一众技术老将聊聊时下运维、数据库、金融科技应“云”而生的技术创新...
2022年度Gdevops全球敏捷运维峰会,将于5月13日以广州为起点正式开启! 与大家携手走过的第7个年头,Gdevops始终坚持输出技术干货.传播前沿理念与实战经验.本次广州站峰会,除了致力于帮助 ...
- oracle 数据库运维技术,Oracle数据库智能运维标准化工艺研究-orastar-DIY数据库运维工具-第1期 导论篇...
1.编制目的 为了提升运维质量,增强数据库运维标准化.规范化,保障信息系统的安全.稳定.高效运行,助力实现智能运维,star同学在此抛砖引玉,特编制该文档. 2.维度定义 根据运维经验,现将数据库日常 ...
- 腾讯再次开源三项技术,提升企业运维效率
(2019年4月11日,深圳)在腾讯内部,工程师文化依然是主流,鼓励用代码.用技术说话--"talk is cheap, show me the code."而其中优质的技术,也正 ...
- [渝粤教育] 宁波城市职业技术学院 Web服务器运维(从零搭建一个企业网站) 参考 资料
教育 -Web服务器运维(从零搭建一个企业网站)-章节资料考试资料-宁波城市职业技术学院[] 作业:购买阿里云ECS 作业:在万网注册域名 作业:ICP备案 微测验:准备主机 1.[单选题]ECS是阿 ...
- 老男孩mysql运维dba实战21部完整版_老男孩MySQL DBA 运维课程全套,资源教程下载...
课程名称 老男孩MySQL DBA 运维课程全套 课程目录 01-第一部-MySQL基础入门(21节) 02-第二部-老男孩MySQL多实例安装与企业应用场景(10节) 03-第三部-老男孩MySQL ...
最新文章
- Go 知识点(04)— 结构体字段转 json格式 tag 标签的作用
- AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss笔记
- python学习干货教程(5):#!/usr/bin/python
- Windows 7/Windows 8都有上帝模式
- java bufferedrandomaccessfile_java 读写操作大文件 BufferedReader和RandomAccessFile
- semi-global matching 算法总结
- oracle sga设置 256G,Oracle SGA大小的解决方法的调整
- conda安装tensorflow-GPU出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url错误
- 如何选择白盒测试工具
- TcPlayer腾讯播放器
- 学校计算机教室用多大线径电缆,施工要用多大的电线电缆?本文教你怎么算
- CA证书出错,请登录微信支付商户平台下载证书
- 计算机usb无法使用,Win7系统电脑USB接口无法使用解决方案
- 【 MATLAB 】gca 介绍(当前轴或图表)
- 基于Word2vec加TextRank算法生成中文新闻摘要(附python代码)
- pandas中pd.groupby()的用法
- java 小数乘法,乐乐课堂四年级数学网课-四年级下册01-第08讲-四边形分类(1).mp4...
- 网页文档下载不了怎么办 亲测可用!建议收藏!
- HTML 标签 02
- UE4_第三方库的引用
热门文章
- 【运动学】基于matlab质点极坐标系中运动规律(螺旋运动)【含Matlab源码 977期】
- Matlab R2020a版安装下载详细操作步骤【Matlab 140期】
- python unpack_Python使用struct处理二进制(pack和unpack用法)
- PyCharm+PyTorch0.4.0安装使用
- matlab 隶属度计算,基于MATLAB实现的云模型计算隶属度
- java提供两种处理异常的机制_Java的异常机制分析及处理办法
- mysql主从同步搭建过程_mysql 主从复制搭建详细步骤
- linux内核 semaphore,Linux内核参数信号量semaphore设置
- 分享大牛们的刷题经验——比你聪明的人还在拼命努力,你有什么资格浪费时间
- MFC CListCtrl 将一个列表的选中项添加到另一个列表