利用Python进行经分系统自动取数报表

本文介绍了如何使用Python的selenium库模拟网页操作,从公司的经济分析系统中自动获取数据,然后利用pandas进行数据处理。尽管过程中遇到了验证码和效率问题,但最终成功实现了自动取数,将取数地址和表头记录在Excel中以备后续扩展。然而,数据分析和报表构造部分仍然依赖Excel和VBA,作者对此表达了对更高效解决方案的期待。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

前言 工作中每天需要报日报,但公司的报表系统又无法直接SQL取数,只能从网页下载后自己做,每天要下载10多张表(还有许多限定条件),比较麻烦。所以想了一个笨办法来实现

实现过程

selenium(模拟网页进行取数)+pandas(构造数据)

步骤记录
  1. 开始的时候,试图通过bs4库进行网页取数,但卡在了用户登录的构造上(验证码及短信验证码,过于复杂),所以方向定在了selenium上;
  2. selenium的运行效率较低,使用chrome无窗口模式,提高运行效率
  3. 取数的页面通过get方式传参,使用fiddler抓到实际地址
  4. 通过source.text获取到返回的json数据,利用pandas操作获得想要的数据
  5. 为了方便复用,将实际截取的地址与表头(order)记录在excel中,方便以后进行添加
反思&待解决问题

1.实际上过程仅仅模拟了经分系统自动取数,并非进行数据分析及报表构造,报表构造依然通过excel公式进行;
2.pandas操作excel,后缀名不支持xlsm格式,目前没有找一个能使用VBA的方式,Excel的操作更习惯于使用VBA,特别是方便录制宏,或者直接通过PQ进行更新,使用pandas依然觉得不熟练和不方便。

代码
#  -*- coding:utf-8 -*-             # 建议所有都加编码

from selenium import webdriver     #导入webdriver包
from time import sleep             #等待休眠相关
import datetime                    #获取当前时间相关
import pandas as pd
from openpyxl import load_workbook
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options

OAusername = "*****"
OApassword = "*****"

#chrome设置(最小化运行 提高运行速度)
opt = Options()
opt.add_argument('--no-sandbox')                # 解决DevToolsActivePort文件不存在的报错
opt.add_argument('window-size=1920x3000')       # 设置浏览器分辨率
opt.add_argument('--disable-gpu')               # 谷歌文档提到需要加上这个属性来规避bug
opt.add_argument('--hide-scrollbars')           # 隐藏滚动条,应对一些特殊页面
opt.add_argument('blink-settings=imagesEnabled=false')      # 不加载图片,提升运行速度
opt.add_argument('--headless')                  # 浏览器不提供可视化界面。Linux下如果系统不支持可视化不加这条会启动失败
driver = Chrome(options=opt)
#driver = webdriver.chrome()    # 使用chrom浏览器

driver.get("http://************.com/loginCenter/sms/login.jsp")
driver.find_element_by_id("jusername").send_keys(OAusername)
driver.find_element_by_id("jpassword").send_keys(OApassword)
driver.find_element_by_id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值