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

前言

前言 工作中每天需要报日报,但公司的报表系统又无法直接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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的python图书馆管理系统示例: ``` class Book: def __init__(self, title, author, isbn): self.title = title self.author = author self.isbn = isbn self.checked_out = False def check_out(self): if not self.checked_out: self.checked_out = True print(f"{self.title} has been checked out.") else: print(f"{self.title} is already checked out.") def check_in(self): if self.checked_out: self.checked_out = False print(f"{self.title} has been checked in.") else: print(f"{self.title} is already checked in.") class Library: def __init__(self): self.books = [] def add_book(self, title, author, isbn): book = Book(title, author, isbn) self.books.append(book) print(f"{book.title} has been added to the library.") def remove_book(self, book): if book in self.books: self.books.remove(book) print(f"{book.title} has been removed from the library.") else: print(f"{book.title} was not found in the library.") def list_books(self): for book in self.books: status = "Checked in" if book.checked_out: status = "Checked out" print(f"{book.title} by {book.author} ({book.isbn}): {status}") def check_out_book(self, book): book.check_out() def check_in_book(self, book): book.check_in() def find_book(self, title): for book in self.books: if book.title == title: return book return None ``` 这个系统包含两个类:`Book`和`Library`。 `Book`类表示一本书,包含书的标题、作者、ISBN号和借阅状态。`Library`类表示整个图书馆,可以添加、删除、列出和查找书,以及将书借出和归还。 以下是使用示例: ``` #创建图书馆 library = Library() #添加书 library.add_book("The Catcher in the Rye", "J.D. Salinger", "0316769177") library.add_book("To Kill a Mockingbird", "Harper Lee", "0446310786") library.add_book("1984", "George Orwell", "0451524934") #列出书籍 library.list_books() #查找书 book = library.find_book("1984") if book: # 借书 library.check_out_book(book) # 归还书 library.check_in_book(book) #移除书 book = library.find_book("The Catcher in the Rye") if book: library.remove_book(book) #列出书籍 library.list_books() ``` 输出: ``` The Catcher in the Rye has been added to the library. To Kill a Mockingbird has been added to the library. 1984 has been added to the library. The Catcher in the Rye by J.D. Salinger (0316769177): Checked in To Kill a Mockingbird by Harper Lee (0446310786): Checked in 1984 by George Orwell (0451524934): Checked in 1984 has been checked out. 1984 has been checked in. The Catcher in the Rye has been removed from the library. To Kill a Mockingbird by Harper Lee (0446310786): Checked in 1984 by George Orwell (0451524934): Checked in ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值