打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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

    设置

项目参考

https://github.com/WiseDoge/ProxyPool

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
爬虫福音:GitHub 超火爆开源 IP 代理池
教你自己搭建一个ip池(绝对超好用!!!!)
神级程序员分享Python爬虫代理池——再也不怕反爬虫!
python爬虫18 | 就算你被封了也能继续爬,使用IP代理池伪装你的IP地址,让IP飘一会
python爬虫入门,10分钟就够了,这可能是我见过最简单的基础教学
开源又可拓展的爬虫工具,目测要火!
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服