在CSViteExporter子类中访问Scrapy 1.0+正确设置?

2024-05-13 00:02:04 发布

您现在位置:Python中文网/ 问答频道 /正文

以前,访问CsvItemExporter子类中的设置(我需要修改设置中指定的分隔符)可以使用以下方法完成:

from scrapy.conf import settings

但是,该方法现在已折旧:

ScrapyDeprecationWarning: Module scrapy.conf is deprecated, use crawler.settings attribute instead from scrapy.conf import settings

我现在怎么做?通常的from_crawlerfrom_settings类方法在CsvItemExporter中不起作用。在


Tags: 方法fromimportsettingsisuseconf子类
3条回答

如果没有其他方法访问设置,则可以尝试替换

from scrapy.conf import settings

^{pr2}$

这实际上就是scrapy/conf.py中的当前兼容性填充程序所做的。 (三年后,它仍然存在:)

目前还没有办法用额外的参数来扩展饲料出口商。实际上,存在一个请求它的特性请求:[Enhancement] Allow BaseItemExporter to accept arguments #973

还有两个关于允许自定义CSV分隔符的功能请求:

因此,我建议您跟踪这些请求,考虑投票支持它们(即添加竖起大拇指的反应)或提供其他反馈,同时您可以忽略警告、取消警告或继续使用nyov’s approach。在

假设所有的设置都是正确的,不熟悉这个错误跟踪,每当我使用csviteexporter时,我都会创建一个附加的模块,用它们作为csviteexporter的项目,然后简单地将我的deliminator声明如下。。。在

在yournameFormModule.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)

然后确保在您的设置中列出了项目(也包括项目.py)在

在设置.py在

^{pr2}$

有一件事我确信这个过程是一样的,或者说蜘蛛就像有一个爬行蜘蛛,尽管我不明白为什么不,我除了使用爬虫之外,还没有测试过。如果你仍然被困在这个关键的生活与你的项目文件,以更好地帮助你。在

相关问题 更多 >