| 123456789101112131415161718192021222324252627282930313233343536373839 |
- from proxypool.tester import Tester
- from proxypool.db import RedisClient
- from proxypool.crawler import Crawler
- from proxypool.setting import *
- class Getter():
- def __init__(self):
- self.redis = RedisClient()
- self.tester = Tester()
- self.crawler = Crawler()
-
- def is_over_threshold(self):
- """
- 判断是否达到了代理池限制
- """
- if self.redis.count() >= POOL_UPPER_THRESHOLD:
- return True
- else:
- return False
-
- def run(self):
- print('获取器开始执行')
- proxy_count = 0
- while not self.is_over_threshold():
- for callback_label in range(self.crawler.__CrawlFuncCount__):
- callback = self.crawler.__CrawlFunc__[callback_label]
- # 获取代理
- proxies = self.crawler.get_proxies(callback)
- # 设置代理并测试
- self.tester.set_proxies(proxies)
- self.tester.run()
- proxy_count += len(proxies)
- if self.is_over_threshold():
- print('代理池已满,暂停抓取')
- break
- if proxy_count == 0:
- # 代理池枯竭
- print('代理池已枯竭')
|