节日期间,接到一位小姐姐的求助,问我有没有方法用python自动把表格录入某个系统,因为她已经快被上百份表格折磨疯了
我初步研究了一下,她的数据格式类似与学生成绩表,而且系统是网页版的,登录也比较简单等,我本来想着用selenium和pandas就可以轻松搞定,但是他这系统输入的时候只能靠键盘输入,那样的话仅靠这两个库是不行的,于是我想到了pyautogui
整个自动化录入过程主要分为三步(由于是公司内部系统,这里不具体演示,以讲方法为主)
1.pandas读取数据
import pandas as pd
data=pd.read_csv('成绩表.csv',encoding='gbk')
data
2.selenium登录系统
selenium自动打开浏览器访问系统登录页
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('系统网址')
自动点击并输入用户名、密码
driver.find_element_by_xpath('//*[@id="username"]').clear()
driver.find_element_by_xpath('//*[@id="username"]').send_keys('用户名')
driver.find_element_by_xpath('//*[@id="password"]').clear()
driver.find_element_by_xpath('//*[@id="password"]').send_keys('密码')
3.循环录入数据
遍历每名学生及成绩,依次录入数据
for tup in data.itertuples():
driver.find_element_by_xpath('//*[@id="name"]')
pyautogui.typewrite(message=tup[1],interval=0.5)
driver.find_element_by_xpath('//*[@id="Chinese"]')
pyautogui.typewrite(message=tup[2],interval=0.5)
driver.find_element_by_xpath('//*[@id="Math"]')
pyautogui.typewrite(message=tup[2],interval=0.5)
driver.find_element_by_xpath('//*[@id="English"]')
pyautogui.typewrite(message=tup[2],interval=0.5)
有的朋友会问,为什么不直接用selenium的sendkeys函数输入,那样岂不是更简单
这是因为selenium的senkeys对带有安全控件的输入框不起作用,例如工商银行的登录框:
所以必须要用键盘登录,pyautogui在这种情况下就发挥了很大的作用。
pyautogui是一款用于自动化测试的python模块,在自动化测试中用于模拟鼠标点击,页面点击等内容
官网给的安装方式很简单,直接在命令行输入:
遗憾的是,我试了N次也木有成功
最后,我在网上下载了pyautogui的安装包
网址为:
点Download files,下载右侧的PyAutoGUI-0.9.38.tar.gz
解压后,进入解压目录执行:
按照这个方法,终于在我电脑上安装成功了
最后,给大家介绍几个pyautogui操控键盘常用的函数:
#模拟输入信息
pyautogui.typewrite(message='Hello world!',interval=0.5)
#点击ESC
pyautogui.press('esc')
# 按住shift键
pyautogui.keyDown('shift')
# 放开shift键
pyautogui.keyUp('shift')
# 模拟组合热键
pyautogui.hotkey('ctrl', 'c')
希望大家都能用学会这项技能,向无聊的办公室重复操作说拜拜!
Python自学超级硬核资料
最后送大家一份Python学习大礼包,从Python基础,爬虫,数据分析Web开发等全套资料,吃透资料,你可以扔掉其他资料,这些资料都是视频,学起来非常友好
Ps:都是视频学习资料,非常适合基础不好或者零基础的同学