Esempio n. 1
0
 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()
Esempio n. 2
0
 def __dispose_one(self, proxy):
     # 检测代理IP的可用性
     proxy = check_proxy(proxy)
     # 如果可用,写入数据库
     if proxy.speed != -1:
         # 可用,写入数据库
         self.mongo_pool.insert_one(proxy)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)
Esempio n. 7
0
 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)
Esempio n. 8
0
 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)
Esempio n. 9
0
 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()
Esempio n. 10
0
 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)
Esempio n. 11
0
 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)
Esempio n. 12
0
 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)
Esempio n. 13
0
 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()
Esempio n. 14
0
 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()
Esempio n. 15
0
    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
Esempio n. 16
0
 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)
Esempio n. 17
0
 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)
Esempio n. 18
0
 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()
Esempio n. 19
0
    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)
Esempio n. 20
0
 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()
Esempio n. 21
0
 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()
Esempio n. 22
0
 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()
Esempio n. 23
0
    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()
Esempio n. 24
0
    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()
Esempio n. 25
0
    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()