我是有一个代劳池,躺固?本上有8000以上的代劳。在ProxyProvider中直接获取到这个代劳池然后供给一个pick函数用于随机拔取得分前50的代劳。
请留意,我的代劳池是每小时更新的,然则代码中供给的jsonblob的代劳列表仅仅是一个样例,过段时光后应当大年夜部分都作废了。
在这里用到一个代劳得分的机制。我并不是直接随机选择代劳,而是将代劳按照得分高低进行排序。每一次成功的请求将加分,而掉足的请求将减分。
如许一会儿就能选出速度、质量最佳的代劳。如不雅有须要还可以存下来下次持续用。
- class ProxyProvider:
- def __init__(self, min_proxies=200):
- self._bad_proxies = {}
- self._minProxies = min_proxies
- self.lock = threading.RLock()
- self.get_list()
- def get_list(self):
- logger.debug("Getting proxy list")
- r = requests.get("https://jsonblob.com/31bf2dc8-00e6-11e7-a0ba-e39b7fdbe78b", timeout=10)
- proxies = ujson.decode(r.text)
- logger.debug("Got %s proxies", len(proxies))
- self._proxies = list(map(lambda p: Proxy(p), proxies))
- def pick(self):
- with self.lock:
- self._proxies.sort(key = lambda p: p.score, reverse=True)
- proxy_len = len(self._proxies)
- max_range = 50 if proxy_len > 50 else proxy_len
- proxy = self._proxies[random.randrange(1, max_range)]
- proxy.used()
推荐阅读
云端定价比较:AWS、Microsoft Azure、Google Cloud、IBM Cloud之间的对决
开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散因为重要的云供给商(AWS、Azure、谷歌和IBM)的云实例价格的持续降低,是以它们增长了扣头选项、增长了实例,并在某些情况下将计费增量降到了按秒>>>详细阅读
本文标题:我是怎样爬下6万共享单车数据并进行分析的(附代码)
地址:http://www.17bianji.com/lsqh/39482.html
1/2 1