loader.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:okami 作者: ambrozic 项目源码 文件源码
def get_spiders_classes(entry_point_name=None):
    discovered = dict()
    if not entry_point_name:
        entry_point_name = __name__.split(".")[0]

    def load_module(module_name):
        module = inspect.importlib.import_module(module_name)
        for importer, modname, ispkg in pkgutil.walk_packages(path=module.__path__):
            mod = inspect.importlib.import_module(module.__name__ + "." + modname)
            if ispkg:
                load_module(mod.__name__)
            else:
                for name, obj in inspect.getmembers(mod):
                    if is_spider(obj) and mod.__name__ == obj.__module__:
                        try:
                            sn = getattr(obj, "name", None)
                            if sn in discovered:
                                raise Exception("Duplicate spider '{}': {} and {}".format(sn, obj, discovered[sn]))
                            discovered[sn] = obj
                        except AttributeError:
                            pass

    load_module(module_name=entry_point_name)
    return discovered
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号