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

How can I export my scraped data from a list to my csv file?

我似乎无法将我的数据正确导出到单个变量中,无法将此变量导出到 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',但这更糟。你能告诉我如何让它变得更好吗?感谢您的耐心等待。

您可以使用更高级的库(例如 pandas)更有效地完成此操作。

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

考虑改变

 item.append(t)
 item.append(p)

 item.append([t,p])

然后更改您的作者代码writer.writerow(products)

for product in products:
    writer.writerow(product)

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

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

    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
        writer.writerow((t, p))


products = itemGrabber(url)