前言
本篇内容,让你完全掌握Python是如何自动化办公的~
使用Python 读取Excel 中的数据,自动批量填入问卷星系统中
一、环境准备
1.1 Python 3.7.0
1.2 Pycharm (Python 开发工具)
1.3 Selenium (处理网页表单工具类)
1.4 openpyxl (处理Excel工具类)
selenium 安装:pip install selenium -i https://pypi.douban.com/simple/
openpyxlpy安装:pip install openpyxl -i https://pypi.douban.com/simple/
我们即将要从Excel中处理的数据长这样:
我们想创建一个.py 文件来实现我们的目标
2.1 先引入我们需要的工具类
# 1、初始化浏览器驱动器
def init_driver():
path = 'E:\\Python_Office_Auto\\Day15\\chromedriver.exe' # 这个要准备chromedriver.exe 放到我们.py 文件同目录。不知道如何获取,加群:367203382,问群主~~~
chrome_options = Options()
# 1、 添加user-agent
chrome_options.add_argument(
'user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"')
# 2、把配置属性传递给驱动程序、并制定驱动程序的路径
driver = webdriver.Chrome(executable_path=path, options=chrome_options)
# 3、隐式等待(给每个网页的元素5秒钟的时间,5秒过后不出现、定位网页元素不存在、并进入异常处理)
driver.implicitly_wait(5)
return driver
2.2 初始化谷歌Driver
# 1、初始化浏览器驱动器
def init_driver():
path = 'E:\\Python_Office_Auto\\Day15\\chromedriver.exe' # 这个要准备chromedriver.exe 放到我们.py 文件同目录。不知道如何获取,加群:367203382,问群主~~~
chrome_options = Options()
# 1、 添加user-agent
chrome_options.add_argument(
'user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"')
# 2、把配置属性传递给驱动程序、并制定驱动程序的路径
driver = webdriver.Chrome(executable_path=path, options=chrome_options)
# 3、隐式等待(给每个网页的元素5秒钟的时间,5秒过后不出现、定位网页元素不存在、并进入异常处理)
driver.implicitly_wait(5)
return driver
2.3 读取Excel
def read_excel():
wb = load_workbook("用户表.xlsx")
ws = wb.active
list_users = []
for row in ws.iter_rows(min_row=2, max_row=4, min_col=1, max_col=4, values_only=True):
list_users.append(row)
return list_users
2.4 填写表单
根据提取的EXCEL信息,自动填入到问卷星系统
def input_form(user):
driver.get('https://www.wjx.top/jq/81172286.aspx')
driver.find_element_by_name('q1').send_keys(user[0])
if user[1] =='男':
# 点击男性
driver.find_elements_by_class_name('jqRadio')[0].click()
else:
# 点击女性
driver.find_elements_by_class_name('jqRadio')[1].click()
# 手机号
driver.find_element_by_name('q3').send_keys(user[2])
# 建议
driver.find_element_by_name('q4').send_keys(user[3])
# 提交
driver.find_element_by_id('submit_button').click()
time.sleep(3)
2.5 main 函数运行整个代码
if __name__ == '__main__':
# 初始化谷歌浏览器驱动器
driver = init_driver()
# 读取Excel 文件,把每行数据放到列表里。
list_users = read_excel()
# 遍历列表,取出用户信息
for user in list_users:
# 执行填写表单操作
input_form(user)
# 最后退出浏览器
driver.quit()
代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
from openpyxl import load_workbook
import time
# 1、初始化浏览器驱动器
def init_driver():
path = 'C:\\Python_Office_Auto\\chromedriver.exe' # 这个要准备chromedriver.exe 放到我们.py 文件同目录。不知道如何获取,加群:367203382,问群主~~~
chrome_options = Options()
# 1、 添加user-agent
chrome_options.add_argument(
'user-agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1"')
# 2、把配置属性传递给驱动程序、并制定驱动程序的路径
driver = webdriver.Chrome(executable_path=path, options=chrome_options)
# 3、隐式等待(给每个网页的元素5秒钟的时间,5秒过后不出现、定位网页元素不存在、并进入异常处理)
driver.implicitly_wait(5)
return driver
def read_excel():
wb = load_workbook(filename = r'C:\\Python_Office_Auto\\资料.xlsx')
ws = wb.active
list_users = []
for row in ws.iter_rows(min_row=2, max_row=11, min_col=2, max_col=11, values_only=True):
list_users.append(row)
return list_users
def input_form(user):
####driver.get('http://')
driver.find_element_by_name('firstname').send_keys(user[0])
# 手机号
driver.find_element_by_name('lastname').send_keys(user[1])
# 建议
driver.find_element_by_name('zipcode').send_keys(user[2])
# 建议
driver.find_element_by_name('city').send_keys(user[3])
driver.find_element_by_name('email').send_keys(user[4])
driver.find_element_by_name('phone').send_keys(user[5])
# 提交
driver.find_element_by_id('submit-button').click()
time.sleep(10)
driver.switch_to.window(driver.window_handles[-1])
sreach_window3=driver.current_window_handle
driver.find_element_by_name('cardNumber').send_keys(user[6])
# 手机号
parent = driver.find_element_by_id("expires_month")
if user[7] =='01':
parent.find_element_by_xpath('.//option[@value="01"]').click()
elif user[7] =='07':
else:
print('error')
# 建议
driver.find_element_by_name('expires_year').send_keys(user[8])
# 建议
driver.find_element_by_name('zip').send_keys(user[9])
driver.find_element_by_name('csc').send_keys(user[10])
driver.find_element_by_id('submitBtn').click()
time.sleep(5)
if __name__ == '__main__':
# 初始化谷歌浏览器驱动器
driver = init_driver()
# 读取Excel 文件,把每行数据放到列表里。
list_users = read_excel()
# 遍历列表,取出用户信息
for user in list_users:
# 执行填写表单操作
input_form(user)
# 最后退出浏览器
driver.quit()
在此,楼主恬不知耻地推荐微信公众号「Python极客思维」,公众号内会持续发布大厂各种高薪岗位,包括但不限于Python岗位(内推哦),欢迎诸位老铁切磋交流~~。
微信扫描下方二维码,获取详细PDF版答案。并且回复Python面试题