以前,访问CsvItemExporter
子类中的设置(我需要修改设置中指定的分隔符)可以使用以下方法完成:
from scrapy.conf import settings
然而,该方法现已折旧:
ScrapyDeprecationWarning:不推荐使用模块
scrapy.conf
,而是使用crawler.settings
属性 来自scrapy.conf导入设置
我现在该怎么办?通常的from_crawler
," from_settings
课程方法无法在CsvItemExporter
中使用。
答案 0 :(得分:0)
假设一切设置正确,不熟悉该错误跟踪,每当我使用CSVitemexporter时,我通过创建一个附加模块来实现它,将其作为CSVitemexporter项目,然后只需简单地说明我这样的分隔符。
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)
然后确保在您的设置中列出项目(也在items.py中)
settings.py
FEED_EXPORTERS = {
'csv': 'PROJECTNAME.YOURNAMEFORMODULE.MyProjectCsvItemExporter',
}
FIELDS_TO_EXPORT = [
'etc',
'etc2',]
我确信这个过程的一个方面是相同的或蜘蛛,好像有一个爬行蜘蛛,虽然我不明白为什么不,我还没有测试过,除了现在使用爬虫。如果您仍然坚持使用项目文件来处理这些生活关键,以便更好地帮助您。
答案 1 :(得分:0)
如果没有其他访问设置的方法,则可以尝试替换
from scrapy.conf import settings
使用
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
本质上就是scrapy/conf.py
中当前兼容性垫片的作用。
(它仍然存在,三年后:)
答案 2 :(得分:0)
当前无法使用其他参数扩展Feed导出程序。实际上,存在一个功能请求,要求它:[Enhancement] Allow BaseItemExporter to accept arguments #973
还有两个有关允许自定义CSV分隔符的功能请求:
CsvItemExporter delimiter should be changeable through settings.py #3252
Adding delimiter, quotechar, encoding, lineterminator options to the CSV exporter #3486
因此,我建议您跟踪这些请求,考虑对它们进行投票(即增加赞许的反应)或以其他方式提供反馈,与此同时,您可以忽略警告,禁止警告或使用{{3} }。