python爬虫进程池_Python爬虫代理池分享——再也不怕反爬虫

为什么需要代理池

在爬取网站信息的过程中,有些网站为了防止爬虫,可能会限制每个ip的访问速度或访问次数。对于限制访问速度的情况,我们可以通过time.sleep进行短暂休眠后再次爬取。对于限制ip访问次数的时候我们需要通过代理ip轮换去访问目标网址。所以建立并维护好一个有效的代理ip池也是爬虫的一个准备工作。

如何构建一个代理池

安装

安装Python

至少Python3.5以上

安装Redis

安装好之后将Redis服务开启

配置代理池

cd proxypool

进入proxypool目录,修改settings.py文件

PASSWORD为Redis密码,如果为空,则设置为None

安装依赖

pip3 install -r requirements.txt

打开代理池和API

python3 run.py

获取代理

利用requests获取方法如下

各模块功能

getter.py

爬虫模块

class proxypool.getter.FreeProxyGetter

爬虫类,用于抓取代理源网站的代理,用户可复写和补充抓取规则。

schedule.py

调度器模块

class proxypool.schedule.ValidityTester

异步检测类,可以对给定的代理的可用性进行异步检测。

class proxypool.schedule.PoolAdder

代理添加器,用来触发爬虫模块,对代理池内的代理进行补充,代理池代理数达到阈值时停止工作。

class proxypool.schedule.Schedule

代理池启动类,运行RUN函数时,会创建两个进程,负责对代理池内容的增加和更新。

db.py

Redis数据库连接模块

class proxypool.db.RedisClient

数据库操作类,维持与Redis的连接和对数据库的增删查该

error.py

异常模块

class proxypool.error.ResourceDepletionError

资源枯竭异常,如果从所有抓取网站都抓不到可用的代理资源,

则抛出此异常。

class proxypool.error.PoolEmptyError

代理池空异常,如果代理池长时间为空,则抛出此异常。

api.py

API模块,启动一个Web服务器,使用Flask实现,对外提供代理的获取功能。

utils.py

工具箱

setting.py

设置

项目参考

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值