我正在尝试让这个循环遍历来自csv的列表,然后将结果从结果Web scrape写入新的csv。
当脚本在我的consol中打印时,它会为infile csv中的每一行完美地返回结果。但是,当将这些结果写入outfile csv时,它只需要最后打印的结果并将其复制为infile csv中的行数。
为什么循环写入的每个结果都不正确,为什么它只复制一个结果呢?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import csv
with open('plates1.csv', mode='r') as infile:
reader = csv.reader(infile)
plates = {rows[0] for rows in reader}
for i in plates:
driver = webdriver.Chrome()
driver.get("https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/buy-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry")
elem = driver.find_element_by_xpath("//input[@id='ph_pagebody_0_phthreecolumnmaincontent_0_panel_VehicleSearch_RegistrationNumberCar_RegistrationNumber_CtrlHolderDivShown']")
elem.clear()
elem.send_keys(i)
elem.send_keys(Keys.RETURN)
expiry = driver.find_element_by_xpath("//*[@id='main']/div/div[2]/div/div[2]/div")
rego = driver.find_element_by_xpath("//*[@id='main']/div/div[2]/div/div/div")
value = rego.text, expiry.text
with open('xyz.csv', 'w') as myfile:
outcsv = csv.writer(myfile, delimiter=',', quotechar='"')
for i in plates:
outcsv.writerow(value)
print value
myfile.close()
driver.close()
infile.close()
谢谢你们!
编辑:脚本不会只写一行,当每行应该是唯一的时,它会写入重复的行。
例如:infile csv“ABC123”和“XYZ098”中有两行。该脚本将结果写入“ABC123”两次而不是“ABC123”和“XYZ098”。
使用参数“a”或“r +”似乎无法解决此问题。