Scrapy与嵌套数组

6 投票
1 回答
7062 浏览
提问于 2025-04-17 19:39

我刚开始接触scrapy,想了解如何抓取一个对象并输出成嵌套的JSON格式。目前,我生成的JSON看起来像这样:

[
{'a' : 1, 
'b' : '2',
'c' : 3},
]

我希望它能更像这样:

[
{ 'a' : '1',
'_junk' : [
     'b' : 2,
     'c' : 3]},
]

---我在_junk子字段里放了一些东西,以便后续处理。

在我的scrapername.py文件中的解析器定义代码是...

item['a'] = x
item['b'] = y
item['c'] = z

我觉得

item['a'] = x
item['_junk']['b'] = y
item['_junk']['c'] = z

---可能能解决这个问题,但我遇到了一个关于_junk键的错误:

  File "/usr/local/lib/python2.7/dist-packages/scrapy/item.py", line 49, in __getitem__
    return self._values[key]
exceptions.KeyError: '_junk'

这是不是意味着我需要以某种方式修改我的items.py文件?目前我有:

class Website(Item):
    a = Field()
    _junk = Field()
    b = Field()
    c = Field()

1 个回答

9

在把东西放进垃圾字典之前,你需要先创建这个字典。

item['a'] = x
item['_junk'] = {}
item['_junk']['b'] = y
item['_junk']['c'] = z

撰写回答