首页 > 解决方案 > 覆盖 Scrapy 中的 serialize_field() 方法

问题描述

我使用 Scrapy 文档中的代码,并创建了“产品”类项

from scrapy.exporter import XmlItemExporter

class ProductXmlExporter(XmlItemExporter):

    def serialize_field(self, field, name, value):
        if field == 'price':
            return f'$ {str(value)}'
        return super(Product, self).serialize_field(field, name, value)

并且总是从命令行得到错误

return super(Product, self).serialize_field(field, name, value)
TypeError: super(Product, obj): obj must be an instance or subtype of type

我是 Python 新手,所以任何帮助都将不胜感激,并对“超级”函数进行了一些研究,但仍然不明白如何在本示例中将此类连接到代码中。

标签: pythonscrapysuper

解决方案


不熟悉scrapy,但Product类与ProductXmlExporter有什么关系?super 关键字不接受不相关的类,因此您的调用应该是return super(XmlItemExporter, self).serialize_field(field, name, value),假设您要调用serialize_fieldXmlItemExporter 的方法。


推荐阅读