2015-10-02 15 views
5

Daha önce, ben ayarlarında belirtilen sınırlayıcı değiştirmeniz gerekir CsvItemExporter, bir alt sınıfta ayarları erişme kullanılarak yapılabilir:Scrapy 1.0+ CsvItemExporter alt sınıfında uygun ayarlara erişim?

from scrapy.conf import settings 

bu yöntem artık değer kaybına uğrar Ancak:

ScrapyDeprecationWarning : Modül scrapy.conf itiraz edildi, scrapy.conf ithalat ayarlarından yerine öznitelik crawler.settings kullanmak

Şimdi nasıl yapabilirim? Her zamanki from_crawler, "from_settings sınıf yöntemleri CsvItemExporter çalışmaz.

+0

Gördüğüm şeyden, CSV dışa aktarıcı sınırlayıcıyı kullanarak ayarların yapılmasının bir yolu yoktur, en basit olanı kendi sınıfınızı oluşturmaktır, CsvItemExporter'ı temel sınıfınız olarak ayarlayın ve __init__ call super wit ek parametreler – Jerzyk

cevap

0

herşey kurulum Ben CSVitemexporter kullanırım her, onlarla proje ile ek modül oluşturarak bunu, o hata Trace bilmeyen, doğru olduğunu varsayarsak CSVitemexporter olmak ve sonra sadece basitçe böyle benim deliminator ...

yournameformodule.py Eyalet'e ayarlarınızdaki öğeleri listelemek emin

sonra
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) 

(ayrıca items.py olarak)

settings.py

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

bir tarama örümcek varmış gibi, ben başka test etmedim neden göremiyorum gerçi sürecin emin olduğum bir şey, aynı veya örümcek işleri şimdilik bir tarayıcı kullanarak. Proje dosyalarınız ile bu yaşam anahtarlarında hala size yardımcı olmak için daha iyi yardımcı olmak için.