首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象的快速动态创建+ json导出

对象的快速动态创建+ json导出
EN

Stack Overflow用户
提问于 2013-04-22 21:05:10
回答 2查看 711关注 0票数 2

我创建了一个新的爬虫来抓取一个网站。这个爬虫在网站上获取liste的每个视频游戏,并为它创建一个对象:

代码语言:javascript
复制
class gameInfos(Item):
    title = Field()
    desc = Field()
    kind = Field()

对于每个游戏,该网站都包含一个可变的经销商列表。我在object中获取每个分销商:

代码语言:javascript
复制
class buyInfos(Item):
    name = Field()
    address = Field()
    price = Field()

现在,我的问题是:

我希望将buyInfos对象放入gameInfos对象中,并且我的json文件如下所示:

代码语言:javascript
复制
[
   {
    "title": "BF3",
    "desc": "a beautiful game",
    "kind" : "FPS",
    "buy" : 
           [
              {name : "cdiscount", "address" : "example", "price" : "45 €"},
              {name : "amazon", "address" : "example amazon", "price" : "40 €"},
               //... other resellers
           ]
   },
   {
    "title": "COD 42",
    "desc": "a game",
    "kind" : "FPS",
    "buy" :
   }, 
   //... other games
]

所以我尝试在我的主对象中创建一个对象。它可以工作,但最后,我只有一个对象要填充,而我想在我的主对象中创建一些对象。

谢谢你的帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-23 00:56:00

解决方案很简单。将对象创建为:

代码语言:javascript
复制
class GameInfo(Item):
    title = Field()
    desc = Field()
    kind = Field()
    listeBuys = Field()

然后,在您的爬行器中,实例GameInfo:

代码语言:javascript
复制
gameInfo = GameInfo()

然后,为所需字段实例化python列表:

代码语言:javascript
复制
gameInfo['listeBuys'] = []

最后,根据需要添加:

代码语言:javascript
复制
gameInfo['listeBuys'].append(asyouwant)

感谢dm03514的帮助!

票数 1
EN

Stack Overflow用户

发布于 2013-04-22 21:24:54

Scrapy Field类是Scrapy的子类。如果您想让其中一个字段能够包含Item列表,我相信您可以创建一个列表字段。

代码语言:javascript
复制
class ListField(list):
  pass

class GameInfo(Item):
    title = Field()
    desc = Field()
    kind = Field()
    buys = ListField()

现在,您可以在爬行器中创建gameInfos,它将能够包含所有相关的buyInfos

代码语言:javascript
复制
game_info = GameInfo()
# create your buy info and append to game info
game_info['buys'].append(new_buy_info)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16147839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档