以前,访问CsvItemExporter
子类中的设置,我需要修改设置中指定的分隔符,可以使用:
from scrapy.conf import settings
但是,该方法现已折旧:
ScrapyDeprecationWarning:不推荐使用模块
scrapy.conf
,而是使用crawler.settings
属性代替scrapy.conf导入设置
我现在该怎么办?通常的from_crawler
,“from_settings
类方法在CsvItemExporter
不起作用。
目前无法使用其他参数扩展Feed导出器。实际上,存在一个要求它的功能请求:[Enhancement] Allow BaseItemExporter to accept arguments #973
还有2个关于允许自定义CSV分隔符的功能请求:
因此,我建议您跟踪这些请求,考虑为他们投票(即添加竖起反应)或提供反馈,同时您可以忽略警告,压制它,或者使用nyov’s approach。
如果没有其他方法可以访问设置,您可以尝试替换
from scrapy.conf import settings
同
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
这基本上是scrapy/conf.py
目前的兼容性垫片。 (此时仍然存在,3年后:)
假设一切都设置正确,不熟悉那个错误跟踪,每当我使用CSVitemexporter时,我通过创建一个附加模块来实现它的项目是CSVitemexporter然后只是简单地说明我的这样的分隔符......
有人那么for module.朋友
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)
然后确保在您的设置中列出项目(也在您的items.py中)
settings.朋友
FEED_EXPORTERS = {
'csv': 'PROJECTNAME.YOURNAMEFORMODULE.MyProjectCsvItemExporter',
}
FIELDS_TO_EXPORT = [
'etc',
'etc2',]
我确信这个过程的一件事就像蜘蛛一样,或蜘蛛,就像爬行蜘蛛一样,虽然我不明白为什么不行,但我现在还没有测试过使用爬行器。如果您仍然坚持使用项目文件来解决生活中的这些关键问题,以便更好地帮助您。