我创建了一个新的蜘蛛来抓取网站。 该爬虫获取网站上列出的每个视频游戏并为其创建一个对象:
class gameInfos(Item):
title = Field()
desc = Field()
kind = Field()
对于每个游戏,网站都包含一个可变的经销商列表。我得到对象中的每个经销商:
class buyInfos(Item):
name = Field()
address = Field()
price = Field()
现在,我的问题:
我想将 buyInfos
对象放入 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
]
所以我尝试在我的主对象中创建一个对象。它有效,但最后,我只有一个对象要填充,而我想在我的主对象内创建一些对象。
感谢您的帮助
最佳答案
Scrapy Field
class 是 dict 的子类。如果您想让其中一个字段能够包含 Item
列表,我相信您可以创建一个列表字段。
class ListField(list):
pass
class GameInfo(Item):
title = Field()
desc = Field()
kind = Field()
buys = ListField()
现在,您可以在蜘蛛中创建gameInfos
,它将能够包含所有相关的buyInfos
game_info = GameInfo()
# create your buy info and append to game info
game_info['buys'].append(new_buy_info)
关于python - Scrapy动态创建对象+json导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16147839/