python使用ip2Region库离线查询ip地址归属地,生成Excel报告
参考:
python使用ip2Region库查询ip地址归属地查询/ip朔源自动生成Excel报告
https://www.pythonheidong.com/blog/article/895015/58b65cf3aeda4f51d1f5/
xlsxwriter简单用法
https://blog.csdn.net/lb245557472/article/details/102955908/
ip2Region库
https://gitee.com/lionsoul/ip2region
xlsxwriter库替换了xlsx库,经过测试可写入了100万+行,无限制。xlsx最大行数限制65535
ip2region.db替换为ip2Region升级后的ip2region.xdb
#-*- coding:utf-8 -*-
import struct, sys, os, time
from platform import python_version
from xdbSearcher import XdbSearcher
import xlsxwriter
def testSearch(ip_s):
dbFile = "../../data/ip2region.xdb"
searcher = XdbSearcher(dbfile=dbFile)
try:
#print("开始检测:",(ip_s))
#sTime = time.time() * 1000
data = searcher.searchByIPStr(ip_s)
#print("return-data:" + f"{data}")
# elif algorithm == "memory":
# data = searcher.memorySearch(line)
# else:
# data = searcher.btreeSearch(line)
#eTime = time.time() * 1000
#ip_info = ("%s|%s" % (ip_s, data))
#print("检测完成:return" + ip_info)
return data
except Exception as e:
print("[Error]: %s" % e)
searcher.close()
def all_in():
#row_id = 1
#book = xlwt.Workbook()
workbook = xlsxwriter.Workbook('ip.xlsx')
#sheet = book.add_sheet('sheet')
worksheet = workbook.add_worksheet()
row = 1
title = ['源ip', '国家', '省份','城市','运营商']
# 定义一个红色+黑体的格式.
#bold = workbook.add_format({'bold': 1, "color": "red"})
#worksheet.write('A1', '源ip', bold)
#worksheet.write('B1', '国家', bold)
#worksheet.write('C1', '省份', bold)
#worksheet.write('C1', '城市', bold)
#worksheet.write('C1', '运营商', bold)
for col in range(len(title)):
worksheet.write(0, col, title[col])
with open('ip.txt' ,'r') as file:
for line in file.readlines():
ip = line.strip()
try:
data = testSearch(ip)
#print("循环内"+f"{data}")
ct = data.split('|')[0].strip()
pv = data.split('|')[2].strip()
city = data.split('|')[3].strip()
yys = data.split('|')[4].strip()
if ct == "0":
#print("地址库中未找到对应的IP归属地,请更新地址库或者确定ip准确性!")
worksheet.write(row, 0, ip)
worksheet.write(row, 1, "/")
worksheet.write(row, 2, "/")
worksheet.write(row, 3, "/")
worksheet.write(row, 4, "/")
row += 1
else:
worksheet.write(row, 0, ip)
worksheet.write(row, 1, ct)
worksheet.write(row, 2, pv)
worksheet.write(row, 3, city)
worksheet.write(row, 4, yys)
row += 1
except Exception as e:
print("[Error]: %s" % e)
worksheet.write(row, 0, ip)
worksheet.write(row, 1, "查询异常")
row += 1
#book.save('score.xls')
workbook.close()
if __name__ == "__main__":
all_in()
25w条ip记录查询时间为44s
输出格式为
