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爬虫技术实战之沃运维报表提取相关推荐

  1. 爬虫技术实战 | WooYun知识库

    爬虫技术实战 | WooYun知识库 爬虫技术实战 大数据分析与机器学习领域Python兵器谱-大数据邦-微头条(wtoutiao.com) 大数据分析与机器学习领域Python兵器谱

  2. 网络回溯分析技术八大应用之运维评估 网络运维的真正价值

    提示:<科来网络回溯分析系统​>V4.0已经正式发布啦!详见科来软件官方网站                      网络回溯分析技术八大应用之运维评估 网管人员最尴尬的地方在于,当你的 ...

  3. 运维工程师:如何利用AR技术减少舟车劳顿提升运维效率?

    一名资深的运维工程师的特征是怎样的?身着衬衫或Polo衫,背负能放进一台笔记本电脑的双肩包,大概率戴着眼镜且一脸疲惫,但敲打代码排除故障时格外认真.此外他们一定拥有丰富的差旅经验,并且大概率拥有各家航 ...

  4. 电能管理系统运用互联网和大数据技术,为电力运维公司和售配电公司提供变电所运维云平

    Acrel-3000WEB电能管理系统在扬州某年产3GW高性能太阳能光伏组件项目 安科瑞 崔远航 摘要:在信息时代,电力信息系统的应用促迚了电力企业的収展,增强了电力系统运行的安全性与稳定性,对满足用 ...

  5. python爬虫入门实战争胜法_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  6. Gdevops广州站:跟一众技术老将聊聊时下运维、数据库、金融科技应“云”而生的技术创新...

    2022年度Gdevops全球敏捷运维峰会,将于5月13日以广州为起点正式开启! 与大家携手走过的第7个年头,Gdevops始终坚持输出技术干货.传播前沿理念与实战经验.本次广州站峰会,除了致力于帮助 ...

  7. oracle 数据库运维技术,Oracle数据库智能运维标准化工艺研究-orastar-DIY数据库运维工具-第1期 导论篇...

    1.编制目的 为了提升运维质量,增强数据库运维标准化.规范化,保障信息系统的安全.稳定.高效运行,助力实现智能运维,star同学在此抛砖引玉,特编制该文档. 2.维度定义 根据运维经验,现将数据库日常 ...

  8. 腾讯再次开源三项技术,提升企业运维效率

    (2019年4月11日,深圳)在腾讯内部,工程师文化依然是主流,鼓励用代码.用技术说话--"talk is cheap, show me the code."而其中优质的技术,也正 ...

  9. [渝粤教育] 宁波城市职业技术学院 Web服务器运维(从零搭建一个企业网站) 参考 资料

    教育 -Web服务器运维(从零搭建一个企业网站)-章节资料考试资料-宁波城市职业技术学院[] 作业:购买阿里云ECS 作业:在万网注册域名 作业:ICP备案 微测验:准备主机 1.[单选题]ECS是阿 ...

  10. 老男孩mysql运维dba实战21部完整版_老男孩MySQL DBA 运维课程全套,资源教程下载...

    课程名称 老男孩MySQL DBA 运维课程全套 课程目录 01-第一部-MySQL基础入门(21节) 02-第二部-老男孩MySQL多实例安装与企业应用场景(10节) 03-第三部-老男孩MySQL ...

最新文章

  1. Go 知识点(04)— 结构体字段转 json格式 tag 标签的作用
  2. AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss笔记
  3. python学习干货教程(5):#!/usr/bin/python
  4. Windows 7/Windows 8都有上帝模式
  5. java bufferedrandomaccessfile_java 读写操作大文件 BufferedReader和RandomAccessFile
  6. semi-global matching 算法总结
  7. oracle sga设置 256G,Oracle SGA大小的解决方法的调整
  8. conda安装tensorflow-GPU出现CondaHTTPError: HTTP 000 CONNECTION FAILED for url错误
  9. 如何选择白盒测试工具
  10. TcPlayer腾讯播放器
  11. 学校计算机教室用多大线径电缆,施工要用多大的电线电缆?本文教你怎么算
  12. CA证书出错,请登录微信支付商户平台下载证书
  13. 计算机usb无法使用,Win7系统电脑USB接口无法使用解决方案
  14. 【 MATLAB 】gca 介绍(当前轴或图表)
  15. 基于Word2vec加TextRank算法生成中文新闻摘要(附python代码)
  16. pandas中pd.groupby()的用法
  17. java 小数乘法,乐乐课堂四年级数学网课-四年级下册01-第08讲-四边形分类(1).mp4...
  18. 网页文档下载不了怎么办 亲测可用!建议收藏!
  19. HTML 标签 02
  20. UE4_第三方库的引用

热门文章

  1. 【运动学】基于matlab质点极坐标系中运动规律(螺旋运动)【含Matlab源码 977期】
  2. Matlab R2020a版安装下载详细操作步骤【Matlab 140期】
  3. python unpack_Python使用struct处理二进制(pack和unpack用法)
  4. PyCharm+PyTorch0.4.0安装使用
  5. matlab 隶属度计算,基于MATLAB实现的云模型计算隶属度
  6. java提供两种处理异常的机制_Java的异常机制分析及处理办法
  7. mysql主从同步搭建过程_mysql 主从复制搭建详细步骤
  8. linux内核 semaphore,Linux内核参数信号量semaphore设置
  9. 分享大牛们的刷题经验——比你聪明的人还在拼命努力,你有什么资格浪费时间
  10. MFC CListCtrl 将一个列表的选中项添加到另一个列表