爬虫入门第11课:实现代理池的启动入口
Posted 黑马程序员官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫入门第11课:实现代理池的启动入口相关的知识,希望对你有一定的参考价值。
爬虫学习知识点及案例篇(汇总):
Python爬虫项目:Bilibili模拟登陆(滑动验证码)
本阶段带大家从代理池的设计开始,学习Python爬虫及项目实战,详情关注上方专栏 ↑↑↑
目标
: 把启动爬虫
,启动检测代理IP
,启动WEB服务
统一到一起-
思路
:- 开启三个进程, 分别用于启动
爬虫
,检测代理IP
,WEB服务
- 开启三个进程, 分别用于启动
-
步骤
:- 定义一个run方法用于启动动代理池
- 定义一个列表, 用于存储要启动的进程
- 创建
启动爬虫
的进程, 添加到列表中 - 创建
启动检测
的进程, 添加到列表中 - 创建
启动提供API服务
的进程, 添加到列表中 - 遍历进程列表, 启动所有进程
- 遍历进程列表, 让主进程等待子进程的完成
- 在
if __name__ == '__main__':
中调用run方法
- 定义一个run方法用于启动动代理池
-
代码
from multiprocessing import Process
from spiders.run_spiders import RunSpider
from proxy_test import ProxyTester
from proxy_api import ProxyApi
def run():
"""总启动方法"""
# 创建
process_list = []
process_list.append(Process(target=RunSpider.start, name='run_spider'))
process_list.append(Process(target=ProxyTester.start, name='run_tester'))
process_list.append(Process(target=ProxyApi.start, name='run_api'))
# 启动进程
for p in process_list:
# 设置进程为守护进行
p.daemon = True
# 进程启动
p.start()
# 让主进程等待子进程完成
for p in process_list:
p.join()
if __name__ == '__main__':
run()
总结
- 为三个模块, 提供统一启动入口
- 开启三个进程, 分别运行, 爬虫模块, 检测模块, API模块.
以上是关于爬虫入门第11课:实现代理池的启动入口的主要内容,如果未能解决你的问题,请参考以下文章