python - Scrapy动态创建对象+json导出

标签 python json scrapy

我创建了一个新的蜘蛛来抓取网站。 该爬虫获取网站上列出的每个视频游戏并为其创建一个对象:

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/

相关文章:

python - 在移动窗口 numpy 数组上有效地应用函数

python - Pandas 根据所有现有列的值(第一列除外)创建新列

python - 使用 LIKE 子句的 Psycopg2 SQL 注入(inject)安全性

python - 仅访问嵌套字典列表中的一个键并使用 matplotlib 绘制它

javascript - 从 node.js 中的文件流中删除最后一个字符(fs 模块)

python - 如何在scrapy Spider中访问管道数据库池

python - scrapy + adbapi = 属性错误 : 'module' object has no attribute 'DictCursor'

javascript - D3.js 和 jQuery - 多个 map 点和点击事件

django - 如何将 JSON 对象从 Django 传递给 FullCalendar(通过序列化模型)?

python - 如何在 scrapy 中发出请求之前更改请求 url?