42、IP代理池

IP代理池

1. 代理IP从何而来

刚自学爬虫的时候没有代理IP就去西刺、快代理之类有免费代理的网站去爬,还是有个别代理能用。当然,如果你有更好的代理接口也可以自己接入。
免费代理的采集也很简单,无非就是:访问页面页面 —> re/json/xpath提取 —> 保存

2. 如何保证代理质量

可以肯定免费的代理IP大部分都是不能用的,不然别人为什么还提供付费的(不过事实是很多代理商的付费IP也不稳定,也有很多是不能用)。所以采集回来的代理IP不能直接使用,可以写检测程序不断的去用这些代理访问一个稳定的网站,看是否可以正常使用。

3. 代理池设计

image-20210801175218616

  • DB 数据管理
    • Mongo
  • Fetcher 数据下载
    • 快代理
    • 云代理
    • 全球代理
  • Validata 数据验证
    • httpbin.org
    • 指定网站
  • Request 下载器
    • 专门下载工具
  • Scheduler 调度器
    • 协调各工具的使用
  • API API接口开发
    • FastAPI
      • 获取IP
      • 获取IP个数

4. logging模块使用

logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点:

  1. 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息;
  2. print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输出到什么地方,以及怎么输出;

4.1 基本使用

配置logging基本的设置,然后在控制台输出日志

import logging

logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")

logging中可以选择很多消息级别,如debug、info、warning、error以及critical。通过赋予logger或者handler不同的级别,开发者就可以只输出错误信息到特定的记录文件,或者在调试时只记录调试信息。

例如,我们将logger的级别改为Warning,再观察一下输出结果,

logging.basicConfig(level = logging.DEBUG,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')

4.2 日志输出到文件

logging.basicConfig(filename='./my.log')
posted @ 2022-02-26 20:04  齐天_大圣  阅读(239)  评论(0)    收藏  举报