Python最强的代理池,突破IP的封锁爬取海量数据

•一个强大到超乎你的想象的异步IP池项目•

async-proxy-pool

随着大型网站反扒机制的增强,更改IP登陆已经成为一种最高效的方式,为此打造一款超强IP池项目,采用最新最快的Python技术——异步(Async )。编写了一个免费的异步爬虫代理池,以 Python asyncio 为基础,充分利用 Python 的异步性能,异步处理比同步处理能提升成百上千倍的效率,速度堪比GO语言。

•项目介绍•

本项目通过爬虫抓取互联网上免费代理网站的IP,并且进行异步检测是否可用,如果可用就放入数据库。定时对数据库中的代理进行维护,然后通过web api的形式供外部使用。

•项目运行环境•

项目使用了 sanic,一个异步网络框架。所以建议运行 Python 环境为 Python3.5+,并且 sanic 不支持 Windows 系统,Windows 用户可以考虑使用 Ubuntu on Windows。

•项目总体架构•

项目主要几大模块分别是爬取模块,存储模块,校验模块,调度模块,接口模块。

爬取模块crawler.py

负责爬取代理网站,并将所得到的代理存入到数据库,每个代理的初始化权值为 INIT_SCORE。

存储模块database.py

封装了 Redis 操作的一些接口,提供 Redis 连接池。

校验模块validator.py

验证代理 IP 是否可用,如果代理可用则权值 +1,最大值为 MAX_SCORE。不可用则权值 -1,直至权值为 0 时将代理从数据库中删除。

调度模块scheduler.py

负责调度爬取器和校验器的运行。

接口模块webapi.py

使用 sanic 提供 WEB API (服务器提供接口)。

•如何使用•

安装 Redis

项目数据库使用了 Redis,Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。所以请确保运行环境已经正确安装了 Redis。安装方法请参照官网指南。

项目源码

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190215A0NGBH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动