python爬虫由浅入深15---利用Redis+Flask来维护代理池和Cookie池

Redis主要用来维护池,提供池的队列存储

关于Redis的安装与配置,可见点击打开链接

Flask来实现池的接口,用它来从中拿出内容

代理池:

作用:用来伪装IP,更好地利用代理资源来应对站点的反爬虫策略

要求:多站抓取,异步检测

   定时筛选,持续更新

           提供接口,易于提取(利用Python的Flask包来提供web接口)

代理池的架构:



代理池的实现:此处贴上Github上大佬的开源项目


将其代码down下来,发现其结构如下:

配置代理池

cd proxypool

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

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

安装依赖
pip3 install -r requirements.txt
打开代理池和API
python3 run.py

获取代理

利用requests获取方法如下

import requests

PROXY_POOL_URL = 'http://localhost:5000/get'

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

各模块功能

  • 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

    设置


Cookie池:

为什么要维护cookie池??
1.有的网站需要登录后才能爬取,如新浪微博

2.爬取过程中如果频率过高会导致封号,那么如果想要获得非常多的数据,则需要非常多的账号

cookie池的要求:

1.自动登录更新

2.定时验证筛选

3.提供外部接口(可将池架在远程的服务器上,实现远程部署)

cookie池的架构



cookie池的实现:需要先将一定量的账号密码之类的cookie存进Redis数据库,然后利用python调用并维护

关于cookies池的维护,有以下开源项目案例可供参考:

个人建立的新浪登陆cookies池




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值