/IPProxiesPool

代理IP池构建

Primary LanguagePythonApache License 2.0Apache-2.0

代理IP池构建


爬虫各组件

简介:

  • 1、 爬虫模块编写,支持pyquery、xpath、JavaScript、beautifulsoup、正则等多种解析模式,使用请查看上面中文文档;
  • 2、 支持抓取各类日志保存,抓取日志、错误日志等各类日志信息;
  • 3、 抓取起始链接可来自于Redis,只需提供Redis-key信息,不用额外编写;
  • 4、 抓取信息持久化支持CSV、JSON、MYSQL、REDIS、KAFAKA、MONGODB等几大类常用持久化工具;
  • 5、 该框架主要是几大模块的组合,至于爬虫逻辑的实现,根据个人需求。

文件树:

|-IPProxiesPool          |--目录文件
   |--ApiSrc                                  |--Api测试
   |--BaseFile                               |--基础配置
       |---GetLocalFile.py                   |--读取本地文件,如URL
       |---GetProxyIp.py                      |--获取代理IP
       |---Logger.py                            |--配置logging日志
       |--- ReadConfig.py                    |--读取配置文件
       |--- UserAgent.py                      |--轮换请求头
   |--Common                                |--公共操作类
       |---CsvHelper.py                       |--操作CSV文件
       |---JsonHelper.py                      |--操作JSON文件
       |---KafkaHelper.py                    |--操作KAFKA文件
       |---MongoHelper.py                  |--操作MONGODB文件
       |---MysqlHelper.py                    |--操作MYSQL文件
       |---RedisHelper.py                    |--操作REDIS文件
    |--Config                                   |--配置信息
       |---HEADERS.py                        |--配置请求头
       |---KAFKA                                  |--KAFKA配置
       |---MONGODB                           |--MONGODB配置
       |---MYSQL                                 |--MYSQL配置
       |---PROXYIP                              |--代理IP配置
       |---REDIS                                  |--REDIS配置
       |---PROXYCONFIG                   |--爬虫基本信息,代理验证及调度,redis评分key配置
    |--Data                                      |--文件存储目录
    |--Logs                                      |--Logs日志存储目录
    |--Spider                                    |--爬虫类
       |---generateProxiesProcessor.py   |--代理网站IP抓取
       |---timerStartDaily.py              |--代理网站周期更新调度
    |--ProxiesClean                                    |--代理IP调度验证类
    |--ProxiesTest                                      |--代理IP验证类
    |--Scheduler                                         |--代理IP验证调度器

Python 3.6 is supported.

代理IP池--简介

顺序

  1. 爬虫抓取各大代理网站目前可用共计14个,见:Data/代理网站.xlsx,并存入redis原数据表proxiesinitial,并依IP为去重key存入proxiesDuplicates表,防止周期更新重新抓取及验证;
  2. 对表内数据逐条验证,通过百度和Telnet登录验证,并评分,初次评分,根据响应时长进行评分;
  3. 代理检验调度:原数据表,开启多进程方式验证,并根据评分对验证通过的IP存入到相应的评分代理池;相应的评分代理池开启内部自检过程,不断维护本池内代理IP活性检验,对于提供出去的IP,存入待检验池,对其重新评分并归类;
  4. 代理提供:根据评分优先规则,从评分高的池内优先获取可用IP并提供,若无则顺次从评分低的池内获取并提供,直至无可用IP;
  5. 未启用-升级版:初次验证只通过百度及telnet验证,但是否可访问目标抓取网址未知,因此设计目标网站验证,如果开启验证,则可对IP做正对性筛选,生成目标网站代理池,不过目前可用IP质量较低,生命周期短,因此未启用此功能;

评分规则

响应时长: 0-1s: 10 分; 1-2s: 8 分; 2-3s: 6 分; 3-4s: 4 分; 4-5s: 2 分;

运行

依次开启:

  • ProxiesSpiderRun.py :代理网站抓取
  • ProxiesCheckRun.py :代理网站初始表验证
  • ProxiesRun.py : 运行代理池自检
  • Api.py : 对外提供API

API 端口:8030