起因#
正在摸魚寫網站日誌分析文章的時候發現需要批量使用純真 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
分別安裝qqwry
和IPy
庫
將要查詢的ip
放到ip.txt
並和qqwry.dat
、.py
檔案在同一個目錄即可運行
效果如下:
參考文章: