import importlib
for full_class_name in PROXIES_SPIDERS:
# IPProxyPool.core.proxy_spider.proxy_spiders.XicidailiSpider
module_name, class_name = full_class_name.rsplit('.', maxsplit=1)
module = importlib.import_module(module_name)
cls = getattr(module, class_name)
spider = cls()
yield spider
主要是利用python内置模块importlib,调用importlib模块中的import_module函数,入参就是我们传入的字符串,然后返回调用结果.
1)module = importlib.import_module(module_name)
相对等于 import IPProxyPool.core.proxy_spider.proxy_spiders
2)使用getattr方法,获取到class_name类中的属性和方法
3)最后创建类并返回