需求:
自动获取大批量excel数据并填写到网页表单
代码实现:
import pandas as pd
import time
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.ui import Select
df = pd.read_excel("NEW_COPY.xlsx", converters={'增添条码':str})
#条码有前导零 也需要录入 这里稍作处理
print(df.head())
driver = Chrome()
url = "你的网址"
driver.get(url)
# driver.maximize_window() #最大化窗口
# 填写用户名密码
driver.find_element(By.XPATH, '//*[@id="random_form"]').send_keys("username")
time.sleep(0.2)
driver.find_element(By.XPATH, '//*[@id="password"]').send_keys("password")
time.sleep(0.2)
driver.find_element(By.XPATH, '/html/body/div/div[2]/div[4]').click()
time.sleep(30)
for idx, row in df.iterrows():
# 已提交数据 ISBN 书名 定价 类别 增添条码
ISBN = row["ISBN"]
driver.find_element(By.XPATH, '//*[@id="info"]').send_keys(ISBN)
time.sleep(0.2)
正题名 = row["书名"]
driver.find_element(By.XPATH,
'//*[@id="app"]/div/div[2]/div/div[2]/div/div[2]/div[2]/div/form[1]/table/tbody/tr[1]/td[4]/div/span/label/input').send_keys(
正题名)
time.sleep(0.2)
定价 = row["定价"]
driver.find_element(By.XPATH,
'//*[@id="app"]/div/div[2]/div/div[2]/div/div[2]/div[2]/div/form[1]/table/tbody/tr[2]/td[6]/div/span/label/input').send_keys(
定价)
time.sleep(0.2)
# 选择类别
click_e_t = driver.find_element(By.XPATH, '//input[@name="collectionType"]')
collection_click_e = click_e_t.find_element(By.XPATH, '../label/input')
collection_click_e.click()
# import ipdb; ipdb.set_trace() ipdb调试工具
time.sleep(1.5) #避免太快 选择不到
all_can_select = driver.find_elements(By.XPATH, '//div[@class="c7n-spin-container"]/ul')[0].find_elements(By.XPATH, './/li')
all_can_select[7].click()
time.sleep(1)
增添条码 = row["增添条码"]
driver.find_element(By.XPATH,
'//*[@id="app"]/div/div[2]/div/div[2]/div/div[2]/div[2]/div/form[2]/table/tbody/tr[3]/td[2]/div/div[1]/label/textarea').send_keys(
增添条码)
time.sleep(0.2)
# 点击提交
driver.find_element(By.XPATH,
'//*[@id="app"]/div/div[2]/div/div[2]/div/div[2]/div[2]/div/form[3]/table/tbody/tr/td/div/div/button[1]').click()
WebDriverWait(driver, 5).until(lambda d: "操作成功" in d.page_source)
# 当出现提示操作成功才进行下一次循环
print ("已完成!")
driver.close()
注意:
部分网页获取下拉列表点击的方式有所差异 这个请根据网页源码自做选择
一定要学会使用IPDB调试工具 太好用了!!!!
可能需要pip update一下 看提示 很好解决 没有报错最好啦
Python真是太好用了 办公利器啊!!!!