2015-10-02 10 views
5

In precedenza, l'accesso alle impostazioni in una sottoclasse di CsvItemExporter, che ho bisogno di modificare il delimitatore specificato nelle impostazioni, potrebbe essere fatto utilizzando:Scrapy 1.0+ accesso alle impostazioni corrette in CsvItemExporter sublcass?

from scrapy.conf import settings 

Tuttavia questo metodo è ormai ammortizzato:

ScrapyDeprecationWarning : Modulo scrapy.conf è obsoleto, utilizzare crawler.settings attributo invece da impostazioni di importazione scrapy.conf

Come posso farlo ora? Il solito from_crawler, "from_settings metodi di classe non funzionano in CsvItemExporter.

+0

da quello che posso vedere non c'è modo di impostare il delimitatore esportatore CSV utilizzando le impostazioni, è più semplice creare la propria classe, impostare CsvItemExporter come classe base e in __init__ chiamare super parametri aggiuntivi wit – Jerzyk

risposta

0

Supponendo che tutto è installato correttamente, la familiarità con quella traccia errore, ogni volta che faccio uso CSVitemexporter, lo faccio con la creazione di un modulo aggiuntivo con loro progetto di essere il CSVitemexporter e poi basta semplicemente dichiarare il mio il deliminator così ...

yournameformodule.py

from scrapy.conf import settings 
from scrapy.contrib.exporter import CsvItemExporter 

class MyProjectCsvItemExporter(CsvItemExporter): 

    def __init__(self, *args, **kwargs): 
     delimiter = settings.get('CSV_DELIMITER', ',') 
     kwargs['delimiter'] = delimiter 

     fields_to_export = settings.get('FIELDS_TO_EXPORT', []) 
     if fields_to_export : 
      kwargs['fields_to_export'] = fields_to_export 

     super(MyProjectCsvItemExporter, self).__init__(*args, **kwargs) 

quindi fare in modo che nelle impostazioni di elencare le voci (anche nella tua items.py)

settings.py

FEED_EXPORTERS = { 
    'csv': 'PROJECTNAME.YOURNAMEFORMODULE.MyProjectCsvItemExporter', 
} 
FIELDS_TO_EXPORT = [ 
    'etc', 
    'etc2',] 

L'unica cosa di cui sono certo il processo funziona lo stesso o un ragno come se ci fosse un ragno strisciare, anche se non riesco a vedere perché no, non ho ancora testato diverso usando un crawler per ora. Se sei ancora bloccato su queste chiavi della vita con i tuoi file di progetto per aiutarti meglio.

Problemi correlati