大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容主要讲解“爬虫ip池能改变ip的原理及实例说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“爬虫ip池能改变ip的原理及实例说明”吧!
创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为贺州企业提供专业的网站设计、网站建设,贺州网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
原理
1、存储模块使用redis的有序集合来表示dialing的去重和状态。
同时也是中心模块和基础模块,连接其他模块。
2、获取模块定期从代理网站获取代理。
将获取的代理传输到存储模块并保存到数据库中。
3、检测模块定期从存储模块获取所有代理。
并检测代理,根据不同的检测结果为代理设置不同的标识。
4、接口模块通过WebAPI连接服务接口。
接口连接数据库,以Web的形式返回可用代理。
实例
from multiprocessing import Process import time from api import app from getter import Getter from tester import Tester TESTER_CYCLE = 20 GETTER_CYCLE = 20 TESTER_ENABLED = True GETTER_ENABLED = True API_ENABLED = True class Scheduler(): """调度模块""" def schedule_tester(self, cycle=TESTER_CYCLE): """ 定时测试代理 :param cycle: :return: """ tester = Tester() while True: print("测试器开始运行") tester.run() time.sleep(cycle) def schedule_getter(self, cycle=GETTER_CYCLE): """ 定时获取代理 :param cycle: :return: """ getter = Getter() while True: print("开始抓取代理") getter.run() time.sleep(cycle) def schedule_api(self): """ 开启api :return: """ app.run() def run(self): print("代理池开始运行") if TESTER_ENABLED: test_process = Process(target=self.schedule_tester) test_process.start() if GETTER_ENABLED: getter_process = Process(target=self.schedule_getter) getter_process.start() if API_ENABLED: api_process = Process(target=self.schedule_api) api_process.start() if __name__ == '__main__': a = Scheduler() a.run()
到此,相信大家对“爬虫ip池能改变ip的原理及实例说明”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!