爬虫ip池能改变ip的原理及实例说明

本篇内容主要讲解“爬虫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的原理及实例说明”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


网页题目:爬虫ip池能改变ip的原理及实例说明
地址分享:http://pwwzsj.com/article/gjcojh.html