def __check_one_proxy(self): """ 检查一个代理IP的可读性 :param proxy: :return: """ # 3.3 把检查一个代理可用性的代码,抽取到一个方法中;从队列中获取代理IP,进行检查;检查完毕,调度队列的task_done方法 proxy = self.queue.get() # 2.3 检查代理IP的可用性 proxy = check_proxy(proxy) # 2.4 如果代理不可用,让代理分数-1 if proxy.speed == -1: proxy.score -= 1 # 如果代理分数等于0就从数据库中删除该代理IP if proxy.score == 0: self.mongo_pool.delete_one(proxy) # 否则更新代理IP else: self.mongo_pool.update_one(proxy) else: # 2.5 如果代理可用,就恢复该代理的分数,更新到数据库中 proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) # 调度队列的task_done方法 self.queue.task_done()
def __dispose_one(self, proxy): # 检测代理IP的可用性 proxy = check_proxy(proxy) # 如果可用,写入数据库 if proxy.speed != -1: # 可用,写入数据库 self.mongo_pool.insert_one(proxy)
def __execute_one_spider_task(self, spider): try: for proxy in spider.get_proxies(): proxy = check_proxy(proxy) if proxy.speed != -1: self.mongo_pool.insert_one(proxy) except Exception as ex: logger.exception(ex)
def __execute_one_spider_task(self, spider): try: for proxy in spider.get_proxies(): proxy = check_proxy(proxy) if proxy.delay != -1: self.mongo_pool.insert_one(proxy) print("新代理插入成功" + dict(proxy)) except Exception as ex: logger.exception(ex)
def _execute_one_task(self, spider): try: proxies = spider.get_proxies() for proxy in proxies: proxy = check_proxy(proxy) if proxy.speed != -1: self.mongo_pool.insert_one(proxy) except Exception as e: logger.error(e)
def __tasks(self, spider): try: proxies = spider.get_proxies() for proxy in proxies: # print(proxy) proxy = check_proxy(proxy) if proxy.idle != -1: self.mongo_pool.insert_one(proxy) except Exception as e: logger.exception(e)
def __execute_one_spider_task(self, spider): try: for proxy in spider.get_proxies(): # 检测代理IP可用性 proxy = check_proxy(proxy) # print(proxy) # 如果可用就入数据库 if proxy.speed != -1: self.mongo_pool.insert_one(proxy) except Exception as e: logger.exception(e)
def __execute_one_spider_task(self, spider): try: for proxy in spider.get_proxies(): # 检测代理IP(调用检测模块) proxy = check_proxy(proxy) # 如果可用,写入数据库(调用数据库模块,speed不为-1就说明可用) if proxy.speed != -1: self.mongo_pool.insert_one(proxy) # print(proxy) except Exception as ex: logger.exception(ex)
def __task(self): proxy = check_proxy(self.q.get()) if proxy.idle == -1: proxy.score -= 1 if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: self.mongo_pool.update_one(proxy) else: proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) self.q.task_done()
def _execute_one_spider_task(self, spider): try: for proxy in spider.get_proxies(): # 2.3 检测代理IP proxy = check_proxy(proxy) # 2.4 如果可用,写入数据库(数据库模块) # 如果speed不为-1,就说明可用 if proxy.speed != -1: # 写入数据库 self.mongo_pool.insert_one(proxy) except Exception as e: logger.exception(e)
def _execute_one_spider_task(self, spider): try: # 遍历爬虫对象的get_proxies方法, 获取代理IP for proxy in spider.get_proxies(): # 2.3 检测代理IP(代理IP检测模块) proxy = check_proxy(proxy) # 如果速度不为-1, 说明可用 if proxy.speed != -1: # 写入数据库 self.mongo_pool.insert_one(proxy) except Exception as e: logger.exception(e)
def _execute_one_spider_task(self, spider): # 用于处理爬虫的方法 try: # 遍历爬虫对象的方法 for proxy in spider.get_proxies(): # print(proxy) # 检测代理可用性 proxy = check_proxy(proxy) # 如果speed不为-1 就说明可用 if proxy.speed != -1: self.mongo_pool.insert_one(proxy) except Exception as ex: logger.exception(ex)
def __check_one_proxy(self): proxy = self.queue.get() proxy = check_proxy(proxy) if proxy.delay == -1: proxy.score -= 1 if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: self.mongo_pool.update_one(proxy) else: proxy.score == MAX_SCROE self.mongo_pool.update_one(proxy) self.queue.task_done()
def _check_one_proxy(self): proxy = self.queue.get() proxy = check_proxy(proxy) if proxy.speed == -1: proxy.score -= 1 print(proxy.score) if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: self.mongo_pool.update_one(proxy) else: proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) self.queue.task_done()
def __modify_one_proxy(self, proxy): proxy = check_proxy(proxy) if proxy.speed == -1: proxy.score -= 1 if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: self.mongo_pool.update_one(proxy) else: proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) return proxy
def __execute_one_spider_task(self, spider): # 3.2 把处理一个代理爬虫的代码抽到一个方法 # 用于处理一个爬虫任务的 try: for proxy in spider.get_proxies(): # 2.3 检测代理IP(代理IP检测模块) proxy = check_proxy(proxy) print(proxy) # 2.4 如果可用,写入数据库(数据库模块) # 如果speed不为-1,就说明可用 if proxy.speed != -1: self.mongo_pool.insert_one(proxy) except Exception as ex: logger.error(ex)
def __execute_one_spider_tack(self, spider): #3.2 把处理一个代理爬虫的代码抽到一个方法 #用于处理一个爬虫任务 try: # 遍历爬虫对象的get_proxies方法,获取代理IP for proxy in spider.get_proxies(): # 监测代理IP proxy = check_proxy(proxy) # 2.4如果可用,写入数据库 # 如果spider不为-1,说明可用 if proxy.speed != -1: # 写入数据库 self.mongo_pool.insert_one(proxy) except Exception as ex: logger.exception(ex)
def __check_one_proxy(self): # 调度队列的task_done方法 proxy = self.queue.get() proxy = check_proxy(proxy) if proxy.speed == -1: proxy.score -= 1 # 如果代理分数等于0就从数据库中删除 if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: self.mongo_pool.update_one(proxy) else: proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) # 调用队列的task_done方法 self.queue.task_done()
def __execute_one_spider_task(self, spider): """3.2 把处理一个代理爬虫的代码抽取到一个方法中""" try: # 遍历爬虫对象的get_proxies方法,获取代理IP for proxy in spider.get_proxies(): # print(type(proxy), proxy) # 2.3 检测代理IP(代理IP检测模块:httpbin_validator.py) proxy = check_proxy(proxy) # 2.4 如果IP可用,写入数据库(数据库模块: mongo_pool.py) # 如果protocol不等于-1,说明IP可用 if proxy.protocol != -1: # 把可用IP写入到数据库 self.mongo_pool.insert_one(proxy) except Exception as e: # 爬虫报错,记录日志信息 logger.exception(e)
def __chech_one_proxy(self): # 从队列中获取代理IP,进行检查 proxy = self.queue.get() # 3. 检测代理可用性 proxy = check_proxy(proxy) # 4. 如果代理不可用,让代理分数-1 if proxy.speed == -1: proxy.score -= 1 # 5. 如果代理分数等于0,就从数据库中删除该IP if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: # 6. 否则更新该IP self.mongo_pool.update_one(proxy) else: # 如果代理可用,就恢复该代理分数,更新到数据库中 proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) # 调度队列的tesk_done方法 self.queue.task_done()
def _check_one_proxy(self): # print(proxy) # 检测ip可用性 # 从队列里面获取队列 proxy = self.queue.get() proxy = check_proxy(proxy) # 如果可用 代理分数减掉1 if proxy.speed == -1: proxy.score -= 1 # 判断分数是否为零 if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: # 更新代理ip self.mongo_pool.update_one(proxy) else: # 如果代理可用, 就恢复代理的分数, 更新到数据库中 proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) self.queue.task_done()
def __check_one_proxy(self): # 检查一个代理IP的可用性 # 3.3 把检查一个代理可用性的代码, 抽取到一个方法中; # 从队列中获取代理IP, 进行检查; 检查完毕 proxy = self.queue.get() # 2.3 检查代理可用性 proxy = check_proxy(proxy) # 2.4 如果代理不可用, 让代理分数-1, if proxy.speed == -1: proxy.score -= 1 # 如果代理分数等于0就从数据库中删除该代理 if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: # 否则更新该代理IP self.mongo_pool.update_one(proxy) else: # 2.5 如果代理可用, 就恢复该代理的分数, 更新到数据库中 proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) # 调度队列的task_done方法 self.queue.task_done()
def __check_one_proxy(self): """检测一个代理IP的可用性""" # 3.3 把要检测一个代理IP的可用性代码抽取到一个方法中;从队列中获取代理IP,进行检测,检测完毕;调度队列的task_done方法 proxy = self.queue.get() # 2.3 检查代理IP可用性 proxy = check_proxy(proxy) # 2.4 如果代理IP不可用, 就让代理IP分值减一, 如果代理IP分值等于0就从数据库中删除该代理IP, 否则就更新该代理IP if proxy.protocol == -1: proxy.score -= 1 # 代理IP减一 if proxy.score == 0: # 如果代理IP分值等于0 # 从数据库中删除该代理IP self.mongo_pool.delete_one(proxy) else: # 否则就更新该代理IP self.mongo_pool.update_one(proxy) else: # 2.5 如果代理IP可用, 就让代理IP分值恢复, 并且更新到数据库中 proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) # 调度队列的task_done方法 self.queue.task_done()
def __check_one_proxy(self): # 3.3 把检查一个代理可用性的代码,抽取到一个方法中, # 从队列中获取代理IP,进行检查,检查完毕 proxy = self.queue.get() # 2.3 检查代理可用性 proxy = check_proxy(proxy) # 如果代理不可用,让代理分数-1 if proxy.speed == -1: proxy.score -= 1 # 如果代理分数等于0,就从数据库中删除该代理 if proxy.score <= 45: self.mongo_pool.delete_one(proxy) else: # 更新代理IP self.mongo_pool.update_one(proxy) else: # 2.5 如果代理可用,就恢复该代理分数,更新到数据库中 proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) # 调度队列的task_done方法 self.queue.task_done()
def __check_one_proxy(self): # 检查一个代理IP的可用性 # 3.3从队列中获取代理IP, 进行检查 proxy = self.queue.get() # 2.3 检查代理可用性 proxy = check_proxy(proxy) # 2.4 如果代理不可用, 让代理分数-1 if proxy.speed == -1: proxy.score -= 1 # 如果代理分数等于0就从数据库中删除该代理IP if proxy.score == 0: self.mongo_pool.delete_one(proxy) else: # 否则更新该代理IP分数 self.mongo_pool.update_one(proxy) else: # 如果代理IP可用, 并且此时分数不为满分时, 就恢复该代理的分数,并更新 if proxy.score != MAX_SCORE: proxy.score = MAX_SCORE self.mongo_pool.update_one(proxy) # 调度队列的task_done方法, 通知队列当前单位任务已完成 self.queue.task_done()