爬虫入门第9课:实现代理池的检测模块

爬虫学习知识点及案例篇(汇总):

爬虫入门第1课:代理池概述及开发环境

爬虫入门第2课:代理池的设计

爬虫入门第3课:实现代理池思路

爬虫入门第4课:定义代理IP的数据模型类

爬虫入门第5课:实现代理池工具模块

爬虫入门第6课:实现代理池的校验模块

爬虫入门第7课:实现代理池的数据库模块

爬虫入门第8课:实现代理池的爬虫模块

Python爬虫项目:Bilibili模拟登陆(滑动验证码)

本阶段带大家从代理池的设计开始,学习Python爬虫及项目实战,详情关注上方专栏 ↑↑↑


  • : 检查代理IP可用性, 保证代理池中代理IP基本可用
    1. 在proxy_test.py中, 创建ProxyTester类
    2. 提供一个  方法, 用于处理检测代理IP核心逻辑
      1. 从数据库中获取所有代理IP
      2. 遍历代理IP列表
      3. 检查代理可用性
        • 如果代理不可用, 让代理分数-1, 如果代理分数等于0就从数据库中删除该代理, 否则更新该代理IP
        • 如果代理可用, 就恢复该代理的分数, 更新到数据库中
    3. 为了提高检查的速度, 使用异步来执行检测任务
      1. 把要检测的代理IP, 放到队列中
      2. 把检查一个代理可用性的代码, 抽取到一个方法中; 从队列中获取代理IP, 进行检查; 检查完毕, 调度队列的task_done方法
      3. 通过异步回调, 使用死循环不断执行这个方法,
      4. 开启多个一个异步任务, 来处理代理IP的检测; 可以通过配置文件指定异步数量
    4. 使用模块, 每隔一定的时间, 执行一次检测任务
      1. 定义类方法 , 用于启动检测模块
      2. 在方法中
        1. 创建本类对象
        2. 调用run方法
        3. 每间隔一定时间, 执行一下, run方法
    • 在proxy_test.py中, 创建ProxyTester类
    • 提供一个  方法, 用于检查代理IP的可用性

    • 为了提高检查的速度, 使用异步来执行检测任务

      • 在初始化方法中
        • 创建一个队列, 用于存储代理IP
        • 创建协程池, 用于实现异步检查
      • 修改 方法:
        • 从数据库中获取代理IP, 添加到队列中
        • 把检查代理可用性的代码抽取一个方法;
          • 在该方法中, 队列中取出一个代理来检查
          • 检查完毕调用一下队列的task_done方法
      • 使用协程池的异步来执行提取的方法, 但是只能检查一个代理IP;
      • 通过异步回调, 实现死循环检查.
      • 通过配置文件,配置异步数量

    • 每隔一定的时间, 执行一次爬取任务
      1. 修改  文件, 检查代理IP可用性间隔时间的配置
      2. 在  中提供start的类方法, 用于启动爬虫的运行, 每间隔指定时间, 重新运行一次.
  • 完整代码

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月27日
下一篇 2022年2月27日

相关推荐