2013-03-19 5 views
5

Je suis nouveau sur scrapy et je voudrais comprendre comment racler sur un objet pour l'afficher dans un fichier JSON imbriqué. En ce moment, je produis JSON qui ressemble àScrapy avec un tableau imbriqué

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

Et je voudrais plus comme ceci:

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

--- où je mets des choses dans _junk pour les sous-zones post-processus plus tard.

Le code actuel dans le fichier de définition de l'analyseur dans mon scrapername.py est ...

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

Et il semblait que

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

--- pourrait corriger cela, mais je reçois un erreur sur la clé _junk:

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

Est-ce que cela signifie que je dois changer mon items.py en quelque sorte? Actuellement j'ai:

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

Répondre

7

Vous devez créer le dictionnaire indésirable avant de stocker des éléments.

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

Ughhhhhhhhhh, à droite, évidemment. Je vous remercie! – Mittenchops