爬虫入门到精通_实战篇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

总结

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

相关推荐
海绵宝宝转agent2 小时前
learn-claude-code第1-5章开源学习笔记分享
人工智能·笔记·python·学习
小奇不哭2 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。
python·yolov8·ros2·cv2·路径探索循迹
小小龙学IT3 小时前
Python scikit-learn 机器学习库深度解析
python·机器学习·scikit-learn
2601_962071573 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境4 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路4 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师4 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏
计算机毕业编程指导师4 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的白鹿抖音评论大数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·抖音评论
Zootopia6265 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
Y3815326625 小时前
搜索 API 延迟优化:并发数、超时与超时的真实代价
python·搜索引擎