如何在 python 中使用 scrapy 将自定义信息添加到 json 文件



我正在使用srapy的jsonitemexporter将数据从项目导出到json文件。现在我想在文件中添加一些有关数据的基本信息,例如合作伙伴名称或页面名称。

将此代码放入

class BidPipeline(object):
file = None
def open_spider(self, spider):
self.file = open('data/'+  datetime.datetime.now().strftime ("%Y%m%d") + '_' + spider.name + '.json', 'wb')
self.exporter = JsonItemExporter(self.file)
# trying to add partner info        
a = {'partner': 3}
line = json.dumps(a) + "n"
self.file.write(line)
self.exporter.start_exporting()

回溯结果:

yield self.engine.open_spider(self.spider, start_requests)
builtins.TypeError: a bytes-like object is required, not 'str'

我的目标是在开始导出项目之前向 json 文件添加一些信息,以便稍后在处理数据时可以确定例如来源。

实现这一目标的最佳方法是什么?

这里有一个错误是不言自明的:

需要类似字节的对象,而不是"str">

您打开文件以写入字节 (wb),然后尝试写入字符串:

def open_spider(self, spider):
self.file = open(..., 'wb')
^^^^^
...
a = {'partner': 3}
line = json.dumps(a) + "n"
^^^^
self.file.write(line)

要解决此问题,请将文件作为字符串文件打开(只需w而不是wb),或者在将行写入文件之前对其进行编码:

self.file.write(line.encode())

最好在写入文本时始终使用w,在写入字节(例如图像数据)时始终使用wb

最新更新