无法使用dictwriter在csv文件中写入数据

时间:2018-08-20 07:23:20

标签: python json python-3.x csv web-scraping

我已经用python编写了一个脚本,以抓取一些<a id="test">...</a>item names以及与每个{{1 }},使用其api从网页上将其写入csv文件。问题是我下面的脚本可以相应地解析数据,但是我无法将其写入csv文件。

但是,当我尝试将它们写入csv文件时,出现以下错误:

estimated time

这是我到目前为止尝试过的:

reviews

对于将抓取的数据写入csv文件的任何帮助,我们将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:0)

尝试更改。

w = csv.DictWriter(f,['name','eta','messg','reviewer','rating'])

w = csv.DictWriter(f,['name','eta', 'reviews','reviewer','rating'])

答案 1 :(得分:0)

ValueError: dict contains fields not in fieldnames: 'reviews'

以上错误指示在写入CSV文件时,映射值不匹配。 更改代码为

 w = csv.DictWriter(f,['name', 'eta', 'reviews', 'reviewer', 'rating'])

 ...

 for texualreviews in req.json()['yelpReviews']:
   reviews_data = {'reviews':texualreviews['message'],'reviewer':texualreviews['reviewerName'],'rating':texualreviews['rating']}
   reviews['reviews'].append(reviews_data)
   w.writerow(reviews)

答案 2 :(得分:0)

documentation for DictWriter指出:

  

如果传递给writerow()方法的字典中包含键   在 fieldnames 中找到,可选的 extrasaction 参数表示   采取什么行动。如果将其设置为'raise',则默认值为a   ValueError被提出。

您对writerow()的调用将字典reviews作为参数,其键为nameetareviews。因此,with语句正下方的行应为:

w = csv.DictWriter(f, ['name', 'eta', 'reviews'])

其他字段不是必需的;如果添加的话,它们将被填充为空。