我创建了一个新的蜘蛛来抓取网站。 这种履带获得网站清单当然每个视频游戏,并为它创建一个对象:Scrapy动态创建对象+ json导出
class gameInfos(Item):
title = Field()
desc = Field()
kind = Field()
每场比赛,本网站包含的经销商变量列表。我得到的每一个经销商在对象:
class buyInfos(Item):
name = Field()
address = Field()
price = Field()
现在,我的问题:
我希望把buyInfos
对象(S)内gameInfos
对象和我的JSON文件如下:
[
{
"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
]
所以我试图在我的主要对象中创建一个对象。它的工作,但最后,我只有一个对象来填充,而我想在我的主要对象内创建一些对象。
感谢您的帮助
感谢您的回答,但我有一个问题。 我创建了“ListField”,就像你我在主对象中添加了一个字段“infos = ListField()”。
然后,在我的蜘蛛:我创建我的主要对象(game_info = GameInfo())和我的子对象。
后,我尝试:
game_info.append(new_buy_info)
但错误传来=>
'game_info.append(子对象) 文件“/usr/lib/python2.7/site-packages/scrapy/ item.py“,第64行,在__getattr__ raise AttributeError(name) exceptions.AttributeError:append' – user2240632 2013-04-22 13:59:32
@ user2240632对不起固定示例 – dm03514 2013-04-22 14:01:49
我得到一个错误:'File”/root/mycrawler/mycrawler/spiders/jiwire.py “,第107行,在parse_hotspot game_info [”buys“]。append(”test“) 文件”/usr/lib/python2.7/site-packages/scrapy/item。py“,第49行,在__getitem__ return self._values [key] exceptions.KeyError:'buys'' – user2240632 2013-04-22 16:09:52