覆盖 Scrapy 中的 serialize_field() 方法 [英] Overriding the serialize_field() method in Scrapy

查看:37
本文介绍了覆盖 Scrapy 中的 serialize_field() 方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 Scrapy 文档中的代码,带有产品"创建的类项

Im using code from Scrapy documentation, with "Product" class item created

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)

总是从命令行出错

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

我是 Python 新手,因此不胜感激,并对超级"进行了一些研究.函数,但仍然不明白如何在此示例中的代码内部连接此类.

I am new to Python so any help would be appreciated and did some research on "super" function but still dont understand how to connect this class inside code in this example.

推荐答案

不熟悉scrapy但是Product类和ProductXmlExporter有什么关系?super 关键字不接受不相关的类,所以你的调用应该是 return super(XmlItemExporter, self).serialize_field(field, name, value),假设你想调用 serialize_field> XmlItemExporter 的方法.

Not familiar with scrapy but how is the Product class related to ProductXmlExporter? The super keyword does not accept unrelated classes so your call should really be return super(XmlItemExporter, self).serialize_field(field, name, value), assuming you want to call serialize_field method of XmlItemExporter.

这篇关于覆盖 Scrapy 中的 serialize_field() 方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆