前言
本篇内容,让你完全掌握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面试题

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐