爬虫进阶:Redis+Flask构建代理池

关键字: 代理池 Redis Flask

GitHub:https://github.com/utopianist/ProxyPool

前言

我们今天跟着 《Python3网络爬虫开发实战》这本书来搭建自己的代理池。

代理池工作后,我拥有了接近八百个代理,评分一百的代理也有上百个。

proxies.png

代理池结构功能

代理池中的 py 文件功能:

未命名文件.png

基本框架:

Frame.png

为什么是 Redis?

Redis 是一个开源的(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理。它支持数据结构,如字符串,散列,列表,集合,或者在排序集中获得排名最高的成员。

Redis 和其他数据库最显著的区别在于 Redis 是一个基于内存的高性能 key-value 数据库。

在 Redis 的使用场景中,我们可以根据需求,对我们爬取的代理进行评分计数,也可以用 Redis 抽取出评分最高的代理。

请在运行代码前,根据有关教程安装配置好 Redis。

为什么是 Flask

Flask 是一个 Python 实现的 Web 开发微框架。

当我们在 IDE 中运行我们的代理池时,在浏览器中输入 127.0.0.1:5555 ,可以进入 Flask 为我们建立起的网页:

Welcome.gif

再跟上 /random ,随机抽取一个代理(默认最高分抽取):

random.gif

换成 /count 可以显示我们目前代理数量:

count.gif

由于我在编辑时,代理池还在运行,所以数量来到了一千个。

我们也可以通过调用 Flask 提供的 API 来获取我们需要的代理,前提是代理池在运行:

import requests

PROXY_POOL_URL = 'http://localhost:5555/random'

def get_proxy():
    try:
        response = requests.get(PROXY_POOL_URL)
        if response.status_code == 200:
            return response.text
    except ConnectionError:
        return None

源码

由于这次代码太多,我就不讲解和贴出来了,源码同步在我的 GitHub 上。

感兴趣的同学可以一起交流。

总之,当程序跑起来的时候,源源不断的代理就跑进你的数据库了:

Running.gif

最后

欢迎关注我的公众号 “爬虫小栈”

6b80e0e3-fb74-46dd-b148-4ed269346fd5.jpg

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值