因此,我需要從一個平臺獲取 CSV,然后在另一個平臺上填寫表格并提交資料。使用 Python 和 Selenium,我已經完成了這項作業:
#-------------------------------------------------------------------------------
# Imports
import csv
import requests
from selenium import webdriver
import time
#-------------------------------------------------------------------------------
# Setup
# name = 0
# age = 1
# score = 2
with open('data.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
#-------------------------------------------------------------------------------
# Web Automation
for line in csv_reader:
driver = webdriver.Chrome(executable_path='./chromedriver')
driver.get('http://site')
time.sleep(3)
title_field = driver.find_element_by_xpath('//*[@id="TITLE"]')
title_field.send_keys(line[0])
fname_field = driver.find_element_by_xpath('//*[@id="FIRSTNAME"]')
fname_field.send_keys(line[1])
lname_field = driver.find_element_by_xpath('//*[@id="LASTNAME"]')
lname_field.send_keys(line[2])
phone_field = driver.find_element_by_xpath('/html/body/div/div/div[5]/form/div[6]/div/div/div/div/div[1]/div[2]/input[2]')
phone_field.send_keys(line[3])
mail_field = driver.find_element_by_xpath('//*[@id="EMAIL"]')
mail_field.send_keys(line[4])
submit = driver.find_element_by_xpath('//*[@id="s-form"]/div[9]/div/button')
submit.click()
#-------------------------------------------------------------------------------
但是也存在缺陷:首先,這需要提供給客戶端,因此考慮將 Python 腳本制作為應用程式,但是由于 Selenium 的一致更改而無法正常作業。將此推廣到客戶端更新,除非這是最后一個選項,否則沒問題。
這會打開一個占用空間的新視窗,我如何使它只有一次加載和填充、提交、成功、填充、提交、成功等。
或者有誰知道更好的方法?我希望有一種情況可以上傳 csv 并且它可以填寫服務器上的檔案,但是表單來自服務。
任何和所有幫助表示贊賞。
uj5u.com熱心網友回復:
這些要點可能會有所幫助——
使用webdriver-manager包。這將使您可以使用最新版本的 chromedriver,甚至無需每次都安裝和指定驅動程式的路徑。可以將此包添加到
requirements.txt檔案中,以防您計劃從服務器運行此檔案。您正在 for 回圈內初始化驅動程式,導致它每次在回圈中打開一個新視窗。
也嘗試使用無頭模式,這被認為是更快一些。
示例片段-
import csv
import requests
from selenium import webdriver
import time
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
with open('data.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
options = Options()
options.headless = True
driver = webdriver.Chrome(ChromeDriverManager().install(),options=options)
for line in csv_reader:
driver.get('http://site')
time.sleep(3)
title_field = driver.find_element_by_xpath('//*[@id="TITLE"]')
title_field.send_keys(line[0])
fname_field = driver.find_element_by_xpath('//*[@id="FIRSTNAME"]')
fname_field.send_keys(line[1])
lname_field = driver.find_element_by_xpath('//*[@id="LASTNAME"]')
lname_field.send_keys(line[2])
phone_field = driver.find_element_by_xpath('/html/body/div/div/div[5]/form/div[6]/div/div/div/div/div[1]/div[2]/input[2]')
phone_field.send_keys(line[3])
mail_field = driver.find_element_by_xpath('//*[@id="EMAIL"]')
mail_field.send_keys(line[4])
submit = driver.find_element_by_xpath('//*[@id="s-form"]/div[9]/div/button')
submit.click()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/374348.html
