import scrapy
class MyBaseSpider(scrapy.Spider):
def __init__(self, name=None, **kwargs):
# 这里做了简化
self.__dict__.update(kwargs)
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
# 在scrapy里是这样定义的
spider = cls(*args, **kwargs)
spider._set_crawler(crawler)
return spider
class TestSpider(MyBaseSpider):
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
# 可以直接加入_dic,在scrapy是这样加入scrapy.settings到spider的属性里的
# 下面加了_dic进去
return cls(*args, **kwargs)
_dic = {"a":1,"b":2,"c":3}
t = TestSpider.from_crawler(crawler=None,**_dic)
print(t.__dict__) # {'a': 1, 'b': 2, 'c': 3}
print(t.a) # 1
print(t.b) # 2
print(t.c) # 3