如何将列表中的抓取数据导出到csv文件?

时间:2019-09-18 14:58:22

标签: python-3.x csv selenium-webdriver web-scraping export-to-csv

我似乎无法正确地将数据导出到单个变量中,也无法将此变量导出到csv文件中。我在做什么错了?

我尝试过:

csvFile = open('products.csv', 'w')
writer = csv.writer(csvFile)
writer.writerow(('name', 'price'))

url = 'https://www.ah.nl/producten/aardappel-groente-fruit/groente/merk=AH'
driver = webdriver.Chrome()
driver.get(url)
driver.implicitly_wait(100)

def itemGrabber(url):
    items = driver.find_elements_by_class_name('product')
    print(str(len(items)) + " items found on page.")

    item = []
    for i in items:
        ## name of product
        t = i.find_element_by_class_name('product-description__title').text.replace("\xad", "")

        ## price
        p = i.find_element_by_class_name('product-price').text

        item.append(t)

        item.append(p)


    print(item)

    return item

products = itemGrabber(url)
writer.writerow(products)

csvFile.close()

csv中的结果是:

name,price

yoghurt,1.0,banana,2.0,kinkytoy,6.99

我希望将其正确分类。我尝试将t和p转换为列表并将其添加到变量'item',但这甚至更糟。你能给我一些技巧,使它变得更好吗?感谢您的耐心等候。

2 个答案:

答案 0 :(得分:0)

使用更高级别的库(例如熊猫),您可能可以更有效地做到这一点。

但是您真正缺少的是一种告诉csvwriter行中断在哪里并且您将整个数组写为一行的方法。

考虑更改

 item.append([t,p])

writer.writerow(products)

,然后更改您的编写者代码for product in products: writer.writerow(product)

timeout

答案 1 :(得分:0)

您可以直接将其作为一行直接写入csv,而不必使用集合。

@section