爬虫入门到精通_实战篇10(使用Redis+Flask维护动态代理池)

1 目标

为什么要用代理池

  • 许多网站有专门的反爬虫措施,可能遇到封IP等问题。
  • 互联网上公开了大量免费代理,利用好资源。
  • 通过定时的检测维护同样可以得到多个可用代理。

代理池的要求

  • 多站抓取,异步检测
  • 定时筛选,持续更新
  • 提供接口,易于提取

2 流程框架

代理池架构:
在这里插入图片描述

3 实战

代码下载

github一位大神的源码作为参考:https://github.com/germey/proxypool
在这里插入图片描述
flask运行需要安装:
virtualenv是一个虚拟的Python环境构建器。它帮助用户并行创建多个Python环境。因此,它可以避免不同版本的库之间的兼容性问题。

# 以下命令用于安装virtualenv:
pip install virtualenv

# 安装后,将在文件夹中创建新的虚拟环境。
mkdir newproj
cd newproj
virtualenv venv

# 要在 Windows 上激活相应的环境,可以使用以下命令:
venv\scripts\activate

# 现在准备在这个环境中安装Flask:
pip install Flask

目录结构及介绍

在这里插入图片描述
examples目录是示例
proxypool:程序的源代码
run:程序入口
setup:安装代理池,代理池安装到python包

run.py:

在这里插入图片描述运行一个调度器schedule,运行一个接口api

schedule.py

在这里插入图片描述
Schedule.valid_proxy:网上获取代理,筛选代理,存到数据库
Schedule.check_pool:定时检查清理代理
在这里插入图片描述
set_raw_proxies:存放可用代理数组
在这里插入图片描述
async:异步检测
test_single_proxy:测试单个代理
在这里插入图片描述
test:测试代理是否可用
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
FreeProxyGetter():各大网站抓取代理的类
is_over_threshold:代理池满没满
callback:动态拿到crawl_方法的名称

db.py

redis队列的一些操作:
连接数据库:
在这里插入图片描述
从数据库获取代理:
在这里插入图片描述
上图是:从左侧批量(count)获取多少个代理。

插入代理:
在这里插入图片描述
上图是:将新代理放入右侧,所以右侧代理比左侧代理新。

api获取最新可用代理:
在这里插入图片描述
获取代理数量及更新:
在这里插入图片描述

getter.py

在这里插入图片描述
添加属性,将方法名汇总起来。
crawl_的方法放入列表
在这里插入图片描述

api.py

在这里插入图片描述

总结

动态获取方式和使用挺好玩的。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值