在Scrapy中如何分离输出json文件中的项目

时间:2014-10-22 04:03:26

标签: json scrapy

我是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文件。非常感谢你的回答。

1 个答案:

答案 0 :(得分:0)

你试过JSON lines feed exporter吗?

它会将您的项目输出为每行一个JSON对象。然后,从文件中读取播放器列表就像在每一行上使用json.loads一样简单。