文章内容

2020/1/4 18:31:30,作 者: 黄兵

Python拆分IP段,并保存到Redis

最近需要将Bytespider的IP地址保存到Redis,Bytespider给的IP格式如下:

110.249.201.0/24
110.249.202.0/24
111.225.148.0/24
111.225.149.0/24
220.243.135.0/24
220.243.136.0/24
60.8.123.0/24
60.8.151.0/24

首先需要做的是将IP解析成单个IP,使用的是IPy包,如果不是很清楚,可以参考这篇文章:实用的IP地址处理模块IPy

之后需要过滤一些不能被使用的IP,例如:110.249.201.0这类IP。

需要说的的是单个IP的类型是IPy.IP的类型,需要转换成字符串,同时保存到Redis,也需要转换成字符串。

具体代码如下:

# !/usr/bin/env python
# -*- coding: utf-8 -*-

import IPy

from config import conn_config


class BytespiderIpSection:
    def __init__(self):
        self._ip_section = ['110.249.201.0/24', '110.249.202.0/24', '111.225.148.0/24', '111.225.149.0/24',
                            '220.243.135.0/24', '220.243.136.0/24', '60.8.123.0/24', '60.8.151.0/24']
        redis_client = conn_config.Conn_Config()
        self._redis_client = redis_client.Conn_Redis()

    def save_redis_by_bytespider_ip(self):
        for item in self._ip_section:
            ip = IPy.IP(item)
            print(ip.len())
            for x in ip:
                if str(x) in ['110.249.201.0', '110.249.201.255', '110.249.202.0', '110.249.202.255', '111.225.148.0',
                              '111.225.148.255', '111.225.149.0', '111.225.149.255', '220.243.135.0', '220.243.135.255',
                              '220.243.136.0', '220.243.136.255', '60.8.123.0', '60.8.123.255', '60.8.151.0',
                              '60.8.151.255']:
                    continue
                else:
                    self._redis_client.sadd('search_engine_bot_ip', str(x))


if __name__ == '__main__':
    BytespiderIpSection().save_redis_by_bytespider_ip()


参考资料:

1、实用的IP地址处理模块IPy

2、关于Bytespider


黄兵个人博客原创。

转载请注明出处:黄兵个人博客 - Python拆分IP段,并保存到Redis

分享到:

发表评论

评论列表