我想为自定义基本蜘蛛类中的蜘蛛提供一些通用功能。定制BaseSpider Scrapy
通常scrapy蜘蛛继承scrapy.Spider
类。
我试图创造scrapy的蜘蛛文件夹BaseSpider类,没有工作
import scrapy
class BaseSpider(scrapy.Spider):
def __init__(self):
super(scrapy.Spider).__init__()
def parse(self, response):
pass
这里是我的实际蜘蛛
import scrapy
import BaseSpider
class EbaySpider(BaseSpider):
name = "ebay"
allowed_domains = ["ebay.com"]
def __init__(self):
self.redis = Redis(host='redis', port=6379)
# rest of the spider code
给出了这样的错误
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
然后,我试图使用多继承,并让我的易趣蜘蛛看起来像
class EbaySpider(scrapy.Spider, BaseSpider):
name = "ebay"
allowed_domains = ["ebay.com"]
def __init__(self):
self.redis = Redis(host='redis', port=6379)
# rest of the spider code
这给
TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases
我在Python以及scrapy新的,我想实现我在这其中不工作我想编码的PHP风格。
我正在寻找适当的方法。
感谢
更新
改变了初始化签名按scrapy.Spider
BaseSpider
def __init__(self, *args, **kwargs):
super(scrapy.Spider, self).__init__(*args, **kwargs)
EbaySpider
class EbaySpider(BaseSpider):
def __init__(self, *args, **kwargs):
super(BaseSpider,self).__init__(*args, **kwargs)
self.redis = Redis(host='redis', port=6379)
仍然得到
File "/scrapper/scrapper/spiders/ebay.py", line 11, in <module>
class EbaySpider(BaseSpider):
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
你有__init __()吗? – omdv
init在哪个类中? –
您在EbaySpider上的第一个错误表明__init__存在问题。你是如何定义它的? – omdv