鱼之乐

子非鱼安知鱼之乐


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

IP代理池-2

发表于 2019-11-27 分类于 工具 评论数:

简介

书接上文,已经可以初步将IP代理池代码跑起来了,也可以通过数据库或web接口获取当前可用代理,本文针对代码做简单介绍。

代码包括四个模块:存储模块、爬取模块、测试模块和接口模块。

存储模块:负责存储爬取下来的代理,使用Redis数据库的SortedSet(有序集合)进行存储,确保代理无重复,并对代理是否可用进行标记。

爬取模块:负责基于提供免费代理的网站进行爬取,代理的形式是IP+端口,爬取下来之后保存到数据库里。

测试模块:负责对代理池中代理的可用性进行测试,设置一个测试URL,然后使用代理去请求,根据响应的状态码判断代理是否可用。

接口模块:提供给爬虫一个接口,返回代理池的接口功能。

代码目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
│  LICENSE
│ README.md
│ requirements.txt
│ test.py
│ _config.yml
│ __init__.py
│
├─Api
│ │ ProxyApi.py
│ │ __init__.py
│
├─cli # 命令行
│ │ proxyPool.py # 启动入口
│ │ start.sh
│
├─Config # 配置信息
│ │ ConfigGetter.py # 配置读取接口
│ │ setting.py # 配置文件
│ │ __init__.py
│
├─DB # 数据库模块
│ │ DbClient.py
│ │ MongodbClient.py # MONGODB
│ │ RedisClient.py # REDIS
│ │ SsdbClient.py # SSDB
│ │ __init__.py
│
├─doc # 说明文档
│ │ block_ips.md
│ │ introduce.md
│ │ release_notes.md
│
├─log # 日志文件
│ │ fetch_proxy.log # 关键日志:爬取日志
│ │ proxy_manager.log # 非关键日志
│ │ raw_proxy_check.log # 关键日志:数据库操作日志
│ │ scheduler_log.log # 非关键日志
│ │ useful_proxy_check.log # 关键日志:接口测试日志
│
├─Manager #
│ │ ProxyManager.py
│ │ __init__.py
│
├─ProxyGetter # 爬取模块
│ │ CheckProxy.py # 检测getFreeProxy的有效性
│ │ getFreeProxy.py # 获取免费代理
│ │ __init__.py
│
├─ProxyHelper
│ │ Proxy.py
│ │ ProxyUtil.py
│ │ __init__.py
│
├─Schedule # 调度程序
│ │ ProxyScheduler.py # 代理调度
│ │ RawProxyCheck.py # 入库调度
│ │ UsefulProxyCheck.py # 测试调度
│ │ __init__.py
│
├─Test # 测试模块
│ │ testConfig.py # 配置测试
│ │ testGetFreeProxy.py # 抓取测试
│ │ testLogHandler.py # 日志测试
│ │ testProxyClass.py #
│ │ testWebRequest.py # web接口测试
│ │ __init__.py
│
├─Util # 基础功能模块
│ │ LogHandler.py # 日志
│ │ utilClass.py #
│ │ utilFunction.py # 包括代理格式校验、获取html、代理有效性校验等功能
│ │ WebRequest.py # web接口
│ │ __init__.py

关键py

proxyPool.py

命令行入口,主要包括schedule()函数,基于命令行启动参数,分别调取代理获取调度程序和web服务,二者可分别调起,但无法在同一个命令行窗口同时调起(阻断)。

代理获取调度程序 : Schedule.ProxyScheduler.runScheduler
web服务 : Api.ProxyApi.runFlask

# proxy pool
IP代理池
  • 文章目录
  • 站点概览
鱼之乐

鱼之乐

11 日志
3 分类
8 标签
  1. 1. 简介
  2. 2. 代码目录结构
  3. 3. 关键py
    1. 3.1. proxyPool.py
© 2019 鱼之乐
由 Hexo 强力驱动 v3.9.0
|
主题 – NexT.Gemini v7.3.0