MENU

Python3 - 用纯真ip数据库批量查询ip归属地

起因

正在摸鱼写网站日志分析文章的时候发现需要批量使用纯真ip数据库来查询ip地址归属地

于是二层摸鱼先写这篇Python批量查询ip归属地的文章,可谓是摸鱼中的摸鱼,杠上开花

这篇文章同时归类于Python工具分享

纯真IP地址数据库介绍

纯真IP数据库解析qqwry.dat库文件。 QQWry IP数据库 纯真版收集了包括中国电信、中国移动、中国联通、长城宽带、聚友宽带等 ISP 的最新准确 IP 地址数据。IP数据库每5天更新一次,需要定期更新最新的IP数据库。

软件长这个样子:

由于其经常更新,我找到了一个GitHub项目,每天自己扫描并同步最新的qqwry.dat

要获取最新的qqwry.dat点我即可下载 (挂梯子)

你也可以下载这个最新版重命名覆盖掉原版的就不用一直下载纯真数据库安装包了

Python批量查询

全面的库请参考文末第一篇参考文章qqwry-python3

这个作者写的工具,已经上传到了pypi,直接pip install qqwry-py3就可使用

当然我这个只是简单实现批量读取ip归属地,后面如果有其他想法会在这篇文章更新

最终版代码如下:

发现好像很难写的亚子,就先用成熟的qqwry库吧,后面有兴趣再写(估计不会再写了)

::quyin:1huaji::

批量从文本查询ip地址并输出结果代码如下:

# -*- coding: utf-8 -*-
'''
@author: soapffz
@fucntion: 使用纯真ip数据库qqwry.dat批量查询txt内ip的归属地
@time: 2019-06-28
'''

from qqwry import QQwry
from IPy import IP


def batch_query_and_print():
    q = QQwry()
    q.load_file('qqwry.dat')
    with open('ip.txt') as f:
        ip_list = f.read().splitlines()
        for read_content in ip_list:
            try:
                IP(read_content)
            except:
                print("有不符合规范的IP地址,请检查后重新运行")
                exit(0)
    address_list = [q.lookup(ip) for ip in ip_list]
    for i, j in zip(ip_list, address_list):
        query_results = i+" "+j[0]+" "+j[1]
        print(query_results)
        with open("query_results.txt", 'a', encoding='utf-8') as f:
            f.writelines(query_results+"\n")


if __name__ == "__main__":
    batch_query_and_print()

pip install分别安装qqwryIPy

将要查询的ip放到ip.txt并和qqwry.dat.py文件在同一个目录即可运行

效果如下:

参考文章:

最后编辑于: 2019 年 07 月 13 日