当前位置: 首页 > news >正文

江苏省建设类高工申报网站什么是建设企业网站

江苏省建设类高工申报网站,什么是建设企业网站,鄞州网站设计,php 企业网站cms在日常办公中#xff0c;经常免不了和Excel打交道#xff0c;每次手工处理数据#xff0c;稍微不细心点。数据可能就出错了。而且重复的任务又会占据大量的工作时间。那有没有办法可以解决这些问题呢#xff1f;今天介绍一种方法#xff0c;可以解决日常工作的重复工作经常免不了和Excel打交道每次手工处理数据稍微不细心点。数据可能就出错了。而且重复的任务又会占据大量的工作时间。那有没有办法可以解决这些问题呢今天介绍一种方法可以解决日常工作的重复工作节省时间从而优化自己工作。今天说的就是通过Python语言的seleniumnumpyjspandas库。完成自动化办公。首先需要通过PythonSeleniumJs 封装一个函数get用于在公司管理平台下载各类所需的数据表(如果数据是直接以excel提供则忽略此步骤)。自动化办公目录图片如下123456.png封装的数据获取的get函数from selenium import webdriverimport time,randomimport json,osfrom selenium.webdriver.support.select import Selectimport cv2封装函数自动登录 //*[idimg]验证码xpathclass cook:def __init__(self):self.driver webdriver.Chrome()self.driver.implicitly_wait(120)try:self.cook_login()time.sleep(3)if self.driver.title ! 需求管理平台:print(cookie login fail)弹出框处理#send_keys(Keys.ENTER)self.driver.switch_to.alert.accept()except:time.sleep(2)self.driver.delete_all_cookies()self.driver.get(url)self.login()self.cookies_write()#cookies写入从而每次调用可以跳过验证码def cookies_write(self):dictCookies self.driver.get_cookies()jsonCookies json.dumps(dictCookies)os.remove(C:/Users/lenovo/Downloads/cookies4.json)time.sleep(2)with open(C:/Users/lenovo/Downloads/cookies4.json, w) as f:f.write(jsonCookies)print(type(jsonCookies),jsonCookies)print(收集完成cookie):param 账号密码def login(self,user账号,pwd密码):time.sleep(1.5)self.driver.find_element_by_id(j_username).send_keys(user)time.sleep(1)self.driver.find_element_by_id(j_password).send_keys(pwd)# img_yzm self.driver.find_element_by_xpath(//*[idimg])# img_yzm.screenshot(rD:\360MoveData\Users\lenovo\Music\Desktop\yzm.jpg)# time.sleep(1)# image1 cv2.imread(rD:\360MoveData\Users\lenovo\Music\Desktop\yzm.jpg)# cv2.imshow(image, image1)# cv2.waitKey(0)# cv2.destroyAllWindows()code input(\n请输入验证码)self.driver.find_element_by_id(code).send_keys(code)log_in self.driver.find_element_by_xpath(//input[value登录])log_in.click()while self.driver.title 首页登录:self.login()def cook_login(self):with open(C:/Users/lenovo/Downloads/cookies4.json, r) as f:#, encodingutf-8)listCookies json.loads(f.read())self.driver.get(http://iimp.sh.cmcc/rip/login.do)self.driver.delete_all_cookies()for i in listCookies:self.driver.add_cookie(i)self.driver.get(http://iimp.sh.cmcc/rip/chaxun.do)self.cookies_write():return 网址dict#返回各类数据的一个字典从而可以通过链接进行下载def back(self):report_list []for link in self.driver.find_elements_by_xpath(//*[idsf-menu2]/li/a):herf link.get_attribute(href)text link.get_attribute(text)lis1 [text, herf]report_list.append(lis1)report_list dict(report_list)return report_list更改时间:param form H5标签的id:param t 更改的时间def alter_time(self,form, t):js document.getElementById(%s).removeAttribute(readonly); % formself.driver.execute_script(js)js_value document.getElementById(%s).value%s % (form, t)self.driver.execute_script(js_value)导出报表函数def report(self,name,start,end):report_list self.back()if name 政企业务需求报表:self.driver.get(report_list[政企业务需求报表])self.driver.find_element_by_xpath(//*[idbd]/div[1]/div[2]/table/tbody/tr/td/table/tbody/tr/td/input).click()elif name 政企KPI跟踪报表:self.driver.get(report_list[政企KPI跟踪报表])self.driver.find_element_by_xpath(//*[idbd]/div[1]/div[2]/table/tbody/tr/td/table/tbody/tr/td/input).click()time.sleep(3)elif name 需求确认时间查询报表:self.driver.get(report_list[需求确认时间查询报表])self.alter_time(confirmTimeStart, start)self.alter_time(confirmTimeEnd, end)self.driver.find_element_by_xpath(// *[ id export]).click()elif name PATCH计划:self.driver.get(report_list[PATCH计划])self.alter_time(planTimeStart, start)self.alter_time(planTimeEnd, end)self.driver.find_element_by_xpath(//*[idbd]/div/div[2]/table/tbody/tr/td/table/tbody/tr[10]/td/input[2]).click()elif name 业支厂商工时报表:self.driver.get(report_list[业支厂商工时报表])self.alter_time(planTimeStart, start)self.alter_time(planTimeEnd, end)self.driver.find_element_by_xpath(//*[idbd]/div/div[2]/table/tbody/tr/td/table/tbody/tr[2]/td/input[2]).click()elif name 测试进度报表:self.driver.get(report_list[测试进度])self.alter_time(planTimeStart, start)self.alter_time(planTimeEnd, end)time.sleep(1)self.driver.find_element_by_xpath(//*[idtestPerson]).clear()self.driver.find_element_by_xpath(//*[idbd]/div/form/div[1]/table/tbody/tr/td/table/tbody/tr[3]/td/input[2]).click()elif name 缺陷工单修复时长报表:self.driver.get(report_list[缺陷工单修复时长报表])self.alter_time(planOnlineTimeStart, start)self.alter_time(planOnlineTimeEnd, end)self.driver.find_element_by_xpath(//*[idbd]/div/div[2]/table/tbody/tr/td/table/tbody/tr[5]/td/input[2]).click()elif name 需求查询:self.driver.get(report_list[需求查询])self.alter_time(time, start)self.alter_time(time1, end)下拉选框选择Select(self.driver.find_element_by_xpath(//select[idremandType])).select_by_visible_text(业务支撑)time.sleep(2)Select(self.driver.find_element_by_xpath(//select[idsecondSelect])).select_by_visible_text(集团下发)self.driver.find_element_by_xpath(//*[nameimportBtn]).click()elif name 敏捷工时统计报表:self.driver.get(report_list[敏捷工时统计报表])self.alter_time(planTimeStart, start)self.alter_time(planTimeEnd, end)self.driver.find_element_by_xpath(//*[idbd]/div[1]/div[2]/table/tbody/tr/td/table/tbody/tr[4]/td/input[2]).click()else:print(发生错误请检查判断条件)def quit(self):self.driver.quit()准备工作完成后然后利用Pandas对表格进行处理处理数据的步骤读取、排序、筛选、去重、计算时间差、透视表、交叉表删除数据、时间修改以及excel的函数计算首次上线、计算上线次数、计算最后一次上线等等。以一个每日任务代码为例代码如下政企KPI任务报表from control.common.get import cookfrom control.common import demandimport time, os, datetimeimport pandas as pdimport warningswarnings.filterwarnings(ignore)# 每次记得更新时间start 2020-01-01end 2021-01-31政企任务的报表下载report1 cook()report1.report(PATCH计划, start, end)report1.report(政企业务需求报表, start, end)report1.report(政企KPI跟踪报表, start, end)time.sleep(3)#定义需要剔除考核的工单列表zq_data [政企工单列表]sj_data [数据工单列表]#创建处理后数据的导出路径t1 demand.ltime(0)t1path rD:\数据统计\12.政企KPI日报/ t1if not os.path.exists(t1path):os.makedirs(t1path)os.chdir(t1path)def clean():time.sleep(2)#数据读取data1 pd.read_excel(rC:\Users\lenovo\Downloads\政企业务需求报表.xls)data2 pd.read_excel(rC:\Users\lenovo\Downloads\PATCH计划2.xls)df1 data1.copy()df1.index df1[工单编号]#数据排序和计算df1.sort_values(by[工单编号, 上线时间], inplaceTrue, ascendingTrue)df1[外部工时][df1[是否重复] 是] df1[df1[是否重复] 是][外部工时] / 2删除指定的工单for i in zq_data:demand.drop_data(df1, i)修改时间df1.loc[工单编号1, 上线时间] 2018-04-24df1.loc[工单编号2, 上线时间] 2018-03-30df1.loc[工单编号3, 创建时间] 2018-06-12df1.loc[工单编号4, 创建时间] 2018-06-12df1.loc[工单编号5, 创建时间] 2018-06-28#更改值为时间格式df1[需求确认] pd.to_datetime(df1[需求确认]) # ,format%Y-%m-%d)df1[到达时间] pd.to_datetime(df1[到达时间])df1[上线时间] pd.to_datetime(df1[上线时间])lst df1[df1[到达时间].isnull()].工单编号.unique().tolist()print(lst)#替换指定工单时间for i in lst:df1.loc[i][到达时间] df1.loc[i][需求确认] - datetime.timedelta(2)df1.loc[政企-2018-17184, 到达时间] pd.to_datetime(2018-12-08)# 修改时间为年-月-日 去除时分秒df1[需求确认] df1[需求确认].apply(lambda x: x.strftime(%Y-%m-%d))df1[到达时间] df1[到达时间].apply(lambda x: x.strftime(%Y-%m-%d))df1[上线时间] df1[上线时间].apply(lambda x: x.strftime(%Y-%m-%d))df2 data2.copy()df2.index df2[工单编号]df2[计划上线时间] pd.to_datetime(df2[计划上线时间])df2.sort_values(by计划上线时间, inplaceTrue, ascendingTrue)#计算最后一次上线工单df2 df2.groupby(工单编号).last()df2[计划上线时间] df2[计划上线时间].apply(lambda x: x.strftime(%Y-%m-%d))# 筛选出指定部门的工单df2 df2[df2[提出部门].str.contains(数据业务中心) | df2[提出部门].str.contains(产品运营支撑中心) | df2[提出部门].str.contains(客户响应与产品运营中心)]# 筛选出指定需求负责人的工单,后期用字典实现筛选df2 df2[df2[需求负责人].str.contains(name1) | df2[需求负责人].str.contains(name2) |df2[需求负责人].str.contains(name3) | df2[需求负责人].str.contains(name4) |df2[需求负责人].str.contains(name5) | df2[需求负责人].str.contains(name6) |df2[需求负责人].str.contains(name7) | df2[需求负责人].str.contains(name8) |df2[需求负责人].str.contains(name9) | df2[需求负责人].str.contains(name10) |df2[需求负责人].str.contains(name11) | df2[需求负责人].str.contains(name12)]# 删除指定的行for i in sj_data:try:demand.drop_data(df2, i)except:print(无法删除的行:%s % i)df2[工单编号] df2.indexdata3 pd.read_excel(rD:\360MoveData\Users\lenovo\Music\Desktop\svn\政企KPI日报.xlsx)data3.index data3[工单编号]a data3[data3.index.str.contains(数据)][[需求确认, 到达时间]]a[需求确认] pd.to_datetime(a[需求确认])a[到达时间] pd.to_datetime(a[到达时间])a[需求确认] a[需求确认].apply(lambda x: x.strftime(%Y-%m-%d))a[到达时间] a[到达时间].apply(lambda x: x.strftime(%Y-%m-%d))#两张数据表合并df2 pd.merge(df2, a, left_indexTrue, right_indexTrue, howleft)concat2 df2[[工单编号, 工单名称, 工单简介, 创建人, 需求负责人, 创建时间, 需求确认, 计划上线时间, 到达时间]]#修改列名concat2.rename(columns{计划上线时间: 上线时间, 工单简介: 简介}, inplaceTrue)df pd.concat([df1, concat2])#数据排序后期用insert插入方式实现df df[[工单编号, 工单名称, 简介, 创建人, 需求负责人, 创建时间, 需求确认, 上线时间, 到达时间,期望上线时间, 需求期望上线时间, 到达总控时间, 一级总控拆分, 来源部门, 工单大类, 工单类型,一级业务标签, 二级业务标签, 一级指标库标签, 二级指标库标签, 三级指标库标签, 上线次数, 外部工时,是否重复]]print(数据已经处理完成正在导出中……)os.chdir(rD:\360MoveData\Users\lenovo\Music\Desktop)# 写入Excel并导出shet pd.ExcelWriter(政企KPI日报.xlsx)df.to_excel(shet, sheet_name政企KPI报表, indexFalse)df1.to_excel(shet, sheet_name政企需求表)df2.to_excel(shet, sheet_namepatch计划表)shet.close()print(本次政企据共%i条 % len(df1))print(本次数据共%i条 % len(df2))print(本次政企日报数据共%i条 % len(df))print(\n在 time.strftime(%Y-%m-%d %H:%M:%S, time.localtime()) 分导出处理后数据)通过自动化以前每次一小时左右完成的数据处理任务现在只需要几分钟就可以完成。而且自动化处理的数据准确性高防止手工操作可能由于一些原因导致数据的不准确性。自动化省出来工作时间从而可以用于继续封装其他任务提高整体效率。从而进入一个良性循环低成本高回报。
http://www.sadfv.cn/news/5620/

相关文章:

  • 申请免费建站0基础学设计该从何开始
  • 网盘搜索网站 怎么做深圳市注册公司需要什么资料
  • 工商网站备案办法共青城市建设局网站
  • 什么网站比较少人做长沙岳麓区房价新楼盘房价
  • 天博网站建设免费金融发布网站模板
  • c# 开发网站开发上海相亲网
  • 东莞做网站 9353怎么制作app软件赚钱
  • 固原住房和城乡建设厅网站网站开发项目架构
  • 微博白菜网站怎么做适应移动端网站模板
  • 网站建设心得小结对网站建设的调研报告
  • 备案 网站 漏接 电话买的网站模板怎么做
  • 网站运营专员月薪多少wordpress4.2.2
  • 中原免费网站建设浙江建设特种证书查询
  • 渭南免费做网站wordpress图片广告插件
  • 水务行业国企门户网站建设wordpress安装的网址路径
  • 网站首页 关键词百度官方平台
  • 网站开发界面设计工具有网站和无网站的区别
  • 做ps从哪个网站上下载图片大小库尔勒网络推广
  • 河南省住建厅网站豫建设标保洁公司哪家好
  • 仙桃网站制作网站设计python做网站的案例
  • 做swf网站关键词搜索引擎
  • 一个论坛网站应该怎么做昆明抖音推广
  • 网站建设与代运营产品介绍网站做微信支付
  • 建设银行公积金预约网站首页设计网站页面设计
  • 做甜品网站的需求分析郑州修了你官方网站
  • 图片无版权网站品牌策划公司的市场
  • 如何识别网站建设省建设执业资格注册中心网站
  • 巩义网站优化大宗商品平台
  • 重庆建网站cqiezscom网站排名优化软件哪家好
  • 黑龙江城乡建设厅网站做放单网站