python爬虫之ProxyPool(代理ip地址池的构建)

ProxyPool


安装


安装Python

至少Python3.5以上

安装Redis

安装好之后将Redis服务开启

Redis环境安装(分布式爬虫数据存储)
https://blog.csdn.net/jia666666/article/details/82216937

配置代理池

cd proxypool

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

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

安装依赖

pip3 install -r requirements.txt

必要操作!!!

在维护代理池时,发现错误两处,运行之前请更改
修改位置为db.py文件30行,56行处 (以pycharm编辑器为参考)

报错1:
zincrby(REDIS_KEY,proxy,-1)
redis.exceptions.ResponseError: value is not a valid float
查看文档后发现zincrby()
更新为
zincrby(self, name, amount, value)
解决方案: zincrby(REDIS_KEY,-1,proxy)

报错2:
zadd(REDIS_KEY, score, proxy)
redis ‘int’ object has no attribute ‘items’
文档更新为
zadd(self, name, mapping, nx=False, xx=False, ch=False, incr=False)
Set any number of element-name, score pairs to the key name. Pairs
are specified as a dict of element-names keys to score values.
解决方案
zadd(REDIS_KEY,{proxy:score})

打开代理池和API

python3 run.py
运行结果如下,程序会不停的进行ip地址的获取与检测ip地址是否可用,便于用户直接使用

python爬虫之ProxyPool(代理ip地址池的构建)_第1张图片

获取代理

利用requests获取方法如下

import requests
#本地端口ip地址获取
PROXY_POOL_URL = 'http://localhost:5555/random'

def get_proxy():
    try:
		#访问程序提供的ip地址获取链接
        response = requests.get(PROXY_POOL_URL)
        #如果获取成功,返回获取的ip地址
        if response.status_code == 200:
            return response.text
    except ConnectionError:
        return None

运行如下
这里写图片描述

相关文件下载及源码下载:https://download.csdn.net/download/jia666666/10636675

你可能感兴趣的:(python爬虫实战)