Python - 我的for循环没有正确写入.csv

时间:2016-10-12 11:37:48

标签: python loops csv selenium writing

我正在尝试让这个循环遍历来自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 +”似乎无法解决此问题。

0 个答案:

没有答案