需求:
自动获取大批量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真是太好用了 办公利器啊!!!!
本文转载自: https://blog.csdn.net/sinat_38119716/article/details/125505901
版权归原作者 ggreekn 所有, 如有侵权,请联系我们删除。
版权归原作者 ggreekn 所有, 如有侵权,请联系我们删除。