前言
本篇內容,讓你完全掌握Python是如何自動化辦公的~
一、環境准備
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/
python3.7.0、pycharm 軟件均在我們的百度網盤里:https://pan.baidu.com/s/1Pe0cZzLU1v46EHZZ7EGCnQ
資源失效了請加Python學習交流群進行獲取:367203382
我們即將要從Excel中處理的數據長這樣:
二、上代碼
我們想創建一個.py 文件來實現我們的目標
2.1 先引入我們需要的工具類
from selenium import webdriver from selenium.webdriver.chrome.options import Options from openpyxl import load_workbook import time
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 填寫表單
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()