当前位置 博文首页 > 明圣的博客:学习代理池时遇到的yield问题
def get_spider_from_settings(self):
print('0spider')
'''根据配置文件信息,获取爬虫对象列表'''
#遍历配置文件中爬虫信息,获取每个爬虫全类名
for full_class_name in PROXIES_SPIDERS:
print('1spider')
module_name,class_name = full_class_name.rsplit('.',maxsplit=1)
#根据模块名,导入模块
module = importlib.import_module(module_name)
#根据类名,从模块中,获取类
cls = getattr(module,class_name)
#创建爬虫对象
spider = cls()
print('2spider')
#返回一个列表形式(生成器),可以方便进行遍历;也可以在for循环前面自己设置一个列表,但是没有yield方便
yield spider
if __name__ == '__main__':
rs = RunSpider()
rs1 = rs.get_spider_from_settings()
for i in rs1:
print(i)
执行结果:
0spider
1spider
2spider
<core.proxy_spider.proxy_spiders.kuaiSpider object at 0x000002A0042C7B50>
1spider
2spider
<core.proxy_spider.proxy_spiders.XiciSpider object at 0x000002A0042C78E0>
1spider
2spider
<core.proxy_spider.proxy_spiders.ip3366Spider object at 0x000002A0042C7B50>
1spider
2spider
<core.proxy_spider.proxy_spiders.proxylistplusSpider object at 0x000002A0042C78E0>
Process finished with exit code 0
cs