【问题标题】:How can I export my scraped data from a list to my csv file?如何将我从列表中抓取的数据导出到我的 csv 文件?
【发布时间】:2019-09-18 14:58:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以将其作为一行直接写入 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)
    

    【讨论】:

    • 谢谢 Sureshmani,您认为我可以更有效地执行此操作吗?我想了解更多导出数据的方法
    【解决方案2】:

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

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

    考虑改变

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

     item.append([t,p])
    

    然后更改您的编写器代码writer.writerow(products)

    for product in products:
        writer.writerow(product)
    

    【讨论】:

    • 谢谢伙计,熊猫是我的下一个目标,我觉得我需要先把基础搞好!你会推荐创建一个字典而不是我使用的列表方法吗?
    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2014-02-08
    • 2018-01-19
    • 1970-01-01
    相关资源
    最近更新 更多