财务机器人——价值50万元的网银解决方案
每个公司的财务都需要经常查询网银,本文旨在通过python实现中国银行网银记录自动下载,节约人力成本。笔者所在公司网银为中行,其他银行的代码逻辑基本上是一样的,如果需要欢迎随时交流!
1代码(python)
from selenium import webdriver
import time
import datetime
import os
import win32com.client
driver = webdriver.Chrome()
driver.get("https://co.ebsnew.boc.cn/boccp/login_CA.html?entryType=5")
time.sleep(2)
# 这里可能会要求输入Ukey,每家的情况不一样,中行的我会放一个另一个代码,需要的时候一起执行即可
def everyday():
driver.find_element_by_xpath('//*[@id="SecEditCtrl1"]').send_keys('******') # 密码(可更改)
time.sleep(1)
driver.find_element_by_xpath('//*[@id="btn_login_62112"]/span').click() # 登陆按钮
time.sleep(3)
driver.find_element_by_xpath('//*[@id="nav307"]/ul/li[2]/a/span').click() # 账户管理
time.sleep(1)
driver.find_element_by_xpath('//*[@id="leftMenu"]/div[1]/dl[1]/dd[2]/a').click() # 今日交易
time.sleep(2)
try:
driver.find_element_by_xpath('//*[@id="leftMenuRollup"]').click() # 收起侧边栏
except:
pass
time.sleep(2)
driver.find_element_by_xpath('//*[@id="today_main_contiditon_chk_all"]').click() # 账户全选
js = "window.scrollTo(0,document.body.scrollHeight)" # 下拉到底
driver.execute_script(js)
time.sleep(2)
# driver.find_element(By.ID, 'btn_shenchengjiaoyixiazaiwenjan_62435').click() # 生成(备用)
driver.find_element_by_css_selector('#btn_shenchengjiaoyixiazaiwenjan_58385 > span').click() # 生成
time.sleep(2)
down_file_nm = driver.find_element_by_xpath(
'//*[@id="today_deal_download_pop"]/div/div/div/div/p[3]/span[2]').text # 提取文件名
time.sleep(2)
driver.find_element_by_xpath('//*[@id="today_deal_download_pop"]/div/div/div/p/a/span').click() # 返回
time.sleep(15)
driver.find_element_by_xpath('//*[@id="today_main_tab_download"]/span').click() # 交易下载
time.sleep(2)
driver.find_element_by_css_selector(
'#today_main_tab_download_div > div > div > table > tbody > tr > td.last > a').click() # 下载按钮
# date_tradebegindate_62180river.find_element_by_link_text("下载").click() # 下载按钮备用
time.sleep(5)
file_path = r'C:\Users\Administrator\Downloads\%s.xls' % down_file_nm # 发送邮件
today_date = datetime.date.today()
outlook = win32com.client.Dispatch('Outlook.Application')
mail_item = outlook.CreateItem(0) # 0: olMailItem
receiver = '*********' # 填写收件人
mail_item.To = receiver
mail_item.Subject = '2019网银' + str(today_date)
mail_item.BodyFormat = 2 # 2: Html format
mail_item.HTMLBody = '''
<H2>今日网银、烦请查收,谢谢! '''
print(file_path)
mail_item.Attachments.Add(file_path)
mail_item.Send()
time.sleep(100)
os.remove(file_path) # 删除文件
def send_error():
outlook = win32com.client.Dispatch('Outlook.Application')
mail_item = outlook.CreateItem(0) # 0: olMailItem
mail_item.Recipients.Add('*****') # 填写邮箱
mail_item.Subject = '网银发送失败提醒'
mail_item.BodyFormat = 2 # 2: Html format
mail_item.HTMLBody = '''网银发送失败'''
mail_item.Send()
def main():
try:
everyday()
except:
send_error()
if __name__ == '__main__':
main()
driver.close()
2环境配置
其他大神已经总结的很好了,笔者就不赘述了,供参考:
第一次发财务机器人的东西,不知道小伙伴们觉得有用么?财务机器人的目的并不是真的要取代财务人员,而是把财务人员从简单重复的劳动中解放出来,把时间专注于更有价值的工作中。这个小工具应用起来很简单,简单复制粘贴一下就可以实现,如果需要更详细可以留言,我出一个从软件下载到实际应用的一个手把手教程,让各位真正体验一次财务机器人!

2020-03-31 20:07:37