我已经用python编写了一个脚本,以抓取一些<a id="test">...</a>
,item names
以及与每个{{1 }},使用其api从网页上将其写入csv文件。问题是我下面的脚本可以相应地解析数据,但是我无法将其写入csv文件。
但是,当我尝试将它们写入csv文件时,出现以下错误:
estimated time
这是我到目前为止尝试过的:
reviews
对于将抓取的数据写入csv文件的任何帮助,我们将不胜感激。谢谢。
答案 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'
,则默认值为aValueError
被提出。
您对writerow()
的调用将字典reviews
作为参数,其键为name
,eta
和reviews
。因此,with
语句正下方的行应为:
w = csv.DictWriter(f, ['name', 'eta', 'reviews'])
其他字段不是必需的;如果添加的话,它们将被填充为空。