本篇内容主要讲解“爬虫ip池能改变ip的原理及实例说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“爬虫ip池能改变ip的原理及实例说明”吧!
原理
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的原理及实例说明”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.py.cn/jishu/spider/31827.html