2017-09-22 4 views
0

、scrapyの項目は次のとおりです。Scrapy:Noneでアイテムを初期化するには?例えば

class CrawlerItem(scrapy.Item): 

    name = scrapy.Field() 

    country = scrapy.Field() 

    title = scrapy.Field() 

    subject = scrapy.Field() 

    ...... 
item = CrawlerItem() 

がどのように私はなしでアイテムのフィールド値のすべてを初期化するだろうか?

私がこれを行うことができます:

item['name'] = None 
item['country'] = None 
... 

しかし、問題があり、2つの多くの分野がはるかにそこにいます。何かできる方法はありますか? item.set_all(None)

答えて

1

あなただけのアイテムクラスのself.fields

class CrawlerItem(scrapy.Item): 

    name = scrapy.Field() 
    country = scrapy.Field() 
    title = scrapy.Field() 
    subject = scrapy.Field() 

    def set_all(self, value): 
     for keys, _ in self.fields.items(): 
      self[keys] = value 

を反復処理する。そして、あなたのコード内であなたが

item = CrawlerItem() 
item.set_all(None) 
print(item) 
+0

グレートを呼び出すことができます必要があります!作品!ありがとう! –

関連する問題