我是Scrapy的新学习者并遇到问题。在抓取网站时我得到了几个json响应(我已经完成了这部分)。我想填充它们,然后输出到一个json文件。但输出文件不是我的预期。
项目类如下所示:
class USLPlayer(scrapy.Item):
ln = scrapy.Field()
fn = scrapy.Field() ...
原始的json文件结构如下所示:
{"players":{"4752569":{"ln":"Musa","fn":"Yahaya", .... ,"apprvd":"59750"}, "4801435":{"ln":"Ackley","fn":"Brian", ... ,"apprvd":"59750"}, ...}}
我希望看到的预期结果如下:
{"item" :{"ln":"Musa","fn":"Yahaya", .... ,"apprvd":"59750"}},{"item": {"ln":"Ackley","fn":"Brian", ... ,"apprvd":"59750"}, ...
基本上我希望每个项目都应该分开列表。
关于填充项目的代码是:
players = json.loads(plain_text)
for id, player in players["players"].items():
for key, value in player.items():
item = USLPlayer() item[key] = value
yield item
有没有办法按照我的预期输出json文件。非常感谢你的回答。
答案 0 :(得分:0)
它会将您的项目输出为每行一个JSON对象。然后,从文件中读取播放器列表就像在每一行上使用json.loads
一样简单。