Merge pull request #1821 from redapple/backport-1.1-pr1818

[backport][1.1] Refactored SpiderLoader class constructor for easier subclassing
This commit is contained in:
Paul Tremberth 2016-02-27 14:50:36 +01:00
commit ed3ef17397
1 changed files with 7 additions and 4 deletions

View File

@ -17,14 +17,17 @@ class SpiderLoader(object):
def __init__(self, settings):
self.spider_modules = settings.getlist('SPIDER_MODULES')
self._spiders = {}
for name in self.spider_modules:
for module in walk_modules(name):
self._load_spiders(module)
self._load_all_spiders()
def _load_spiders(self, module):
for spcls in iter_spider_classes(module):
self._spiders[spcls.name] = spcls
def _load_all_spiders(self):
for name in self.spider_modules:
for module in walk_modules(name):
self._load_spiders(module)
@classmethod
def from_settings(cls, settings):
return cls(settings)