QQwry到Sqlite3(续)

ip-纯真库:批量获取ip归属地 1、所需python包: from qqwry import QQwry #pip install qqwry-py3 from IPy import IP import socket import threading import csv import time import eventlet from urllib.parse import urlparse q = QQwry() q.load_file('qqwry.dat') 2、多线程处理函数: threads_ip(参数1,参数2) 阅读详情
下面是用于查询转成sqlite3的qqwry的python代码

'''
Created on 2010-5-4

@author: Ben
@mail: ben.pang.china@gmail.com
'''

import os, sys, re
import sqlite3
from converter import b2I, dbname

def int2Ip(i):
    """IP字符串转换成IP对象"""
    i = int(i)
    return IP( "{}.{}.{}.{}".format( i >> 24, i  >> 16 & 0xFF, i  >> 8 & 0xFF,  i & 0xFF ) )

def ip2Int(ip):
    """IP字符串转换成Integer"""
    if ipm.match(ip):
        return b2I( reversed(list( map( int, ip.split(".") ) )) )

# local variables
ipm = re.compile( "^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$" )
conn = None

def init():
    global conn
    sqlite3.register_converter("ip", int2Ip)
    conn = sqlite3.connect(dbname, detect_types = sqlite3.PARSE_COLNAMES);
    
class IP:
    def __init__(self, ip):
        """IP类,存放IP地址,并验证IP字符串是否有效"""
        if not ipm.match(ip):
            raise ValueError( "invalid ip value:" + ip )
        self.ip = ip
    
    def __str__(self):
        return self.ip

if __name__ == '__main__':
    if os.path.exists(dbname) and len(sys.argv) == 2 and ipm.match(sys.argv[1]):
        init()
        cur = conn.cursor()
        cur.execute("""
        SELECT start_ip as "s [ip]",
        end_ip as "e [ip]",
        country.name,
        area.name
        FROM ipaddr,country,area WHERE (? BETWEEN start_ip AND end_ip) AND cid = country.id AND aid = area.id;
        """, (ip2Int(sys.argv[1]), ) )
        
        for r in cur:
            print("""
            start ip: {} ~ {}
            {}
            """.format(*r))
        
        conn.close()
    else:
        print("not found ipdb for" + dbname, file = sys.stderr )

 

很不幸,经过尝试转成sqlite3的QQwry的压缩率并没有我想的那么高,整个库文件有31M,是QQwry原格式的3倍.

 

下面是SQL脚本

CREATE TABLE IF NOT EXISTS country (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL UNIQUE
);

CREATE TABLE IF NOT EXISTS area (
    id INTEGER PRIMARY KEY,
    name TEXT NOT NULL UNIQUE
);

CREATE TABLE IF NOT EXISTS ipaddr (
    start_ip INTEGER PRIMARK KEY,
    end_ip INTEGER NOT NULL UNIQUE,
    cid INTEGER NOT NULL,
    aid INTEGER DEFAULT NULL
);

CREATE INDEX IF NOT EXISTS ipIdx ON ipaddr (start_ip, end_ip)

 

因为在SQLITE3里把IP转成integer了,所以可以看到上面的代码中注册了一个convertor用于转换,如果觉得不方便还可以注册funtion viewIP,然后create view,使用注册的函数显示IP,这会增加开销,但可以满足使用习惯
像这样

 

create view ipview as SELECT viewIP(start_ip),... FROM ipaddr....


OK.


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

相关推荐

2019年IP地址库 2月更新qqwry.dat 纯真IP库 dat文件

qqwry.dat 2月更新的地址库 全球地址库 很全很新,纯真IP库,可以用于根据IP查询IP所属地址

使用docker部署Python实现IP地址查询实践

本文从0开始,一步一步地完整实现了在Linux服务器中,使用docker容器化部署Python环境,并实现对IP地址的来源地查询的功能。

once_fly的博客 858

R链式中介:如何一次性生成4个变量所有可能的链式中介结果?(含结果解读与粗略作图)#bruceR#ggplot2

一次性生成4个变量所能生成的24种链式中介并作图

weixin_64183017的博客 3236

【亲测免费】 QQwry IP 归属地查询库使用教程

QQwry项目是一个Python库,用于查询IP地址的归属地信息。以下是其基本的目录结构: ``` . ├── qqwry.py # 主要功能模块,包含QQwry类 └── qqwry.dat # IP数据库文件,存储IP地址和归属地信息 ``` - `qqwry.py`: 包含`QQwry`类,提供了加载数据库、查询IP和管理内存中的IP数据的功能。 - `qqwry....

gitblog_00314的博客 902

HBuilderX远程开发环境配置:Windows SSH连接实操

详细介绍如何在Windows系统中通过SSH连接远程服务器,配置HBuilderX进行高效远程开发,提升编码协作效率。全程实操演示,轻松掌握hbuilderx与远程环境的无缝对接。

weixin_35751194的博客 1192

安时积分法和开路电压法结合估算锂电池SOC

基于安时积分法和开路电压法结合的锂电池SOC估计Simulink仿真建模,利用安时积分法计算放电过程中的SOC,在搁置状态利用开路电压法进行SOC修正。

qq_39304296的博客 2554

qqwry 解析(python3) 并且dump 到 mysql

准备工作 python 3.7 + IDE internet 致谢 本项目借鉴于qqwry-py3,相关文件已附上地址: https://pypi.org/project/qqwry-py3/ 吐槽 搞了一下午,总算出来了,qqwry-py3中解析那部分写的是非常棒,但是在更新文件这里,UA头可能是以前的,现在不能用了,替换一下就欧克了。 数据库这部分通过索引做的单文件,来回来去绕的我头发懵,dump都毫无思路,经过不懈的努力,终于搞出来了,主要对于这个数据库不是查询,而是dump,然后可以通过这些数据

尊暮萧的博客 1179

k8s重装1.28.2+calico+踩坑收集+InPlacePodVerticalScaling

它提供了从镜像构建(通过 Dockerfile)、镜像管理(上传、下载、存储等)、容器创建、运行、网络配置(可以为容器分配自定义的网络,如 bridge 网络、host 网络等)到容器编排(通过 Docker Compose 可以简单地编排多个容器的启动和关联关系)等一整套完整的解决方案。它的核心功能是启动和管理容器的生命周期。sudo apt update这个可以经常用,是来更新软件包的,它不下载,所以没风险,但是经常会报错,别问,问就是某种强大的力量,所以用镜像或者代理或者巴拉巴拉。

SsjjsS2019的博客 2553

python代理池项目_python开源IP代理池--IPProxys

今天博客开始继续更新,谢谢大家对我的关注和支持。这几天一直是在写一个ip代理池的开源项目。通过前几篇的博客,我们可以了解到突破反爬虫机制的一个重要举措就是代理ip。拥有庞大稳定的ip代理,在爬虫工作中将起到重要的作用,但是从成本的角度来说,一般稳定的ip池都很贵,因此我这个开源项目的意义就诞生了,爬取一些代理网站提供的免费ip(虽然70%都是不好使的,但是扛不住量大,网站多),检测有效性后存储到数...

weixin_36286464的博客 595

Windows C语言编程:Beep API实现蜂鸣器原理与实战

如果你在 Windows 上写过 C 语言程序,想给程序加个简单的提示音,第一个想到的可能是 printf("\a") 。这个转义字符确实能在某些终端里发出“嘀”的一声,但它太原始、太不可控了,而且很多时候根本没声音。那么,有没有一种更“Windows”、更可控、更专业的方法来让你的程序“说话”呢? 答案是肯定的,而且它比你想象的要强大和复杂。Windows 提供了一个名为 Beep 的 API 函数,专门用于生成蜂鸣声。你可能觉得这功能太简单,甚至有点过时——不就是让电脑“哔”一声吗?但恰恰是这个看似简单

weixin_34109408的博客 395

【干货】S7-PLCSIM Advanced V3.0 无法启动实例( Error Code:-30,LicenseNotFound)问题解决方法

【干货】S7-PLCSIM Adavanced V3.0 无法启动实例( Error Code:-30,LicenseNotFound)问题解决方法

handinvv的博客 5万+

2021-09-12

CutefishOS网盘地址CutefishOS下载非常慢,还不支持断点续传,所以分享网盘 CutefishOS下载非常慢,还不支持断点续传,所以分享网盘 版本:CutefishOS_Ubuntu_v0.4_Beta_Developer_edition.iso https://pan.baidu.com/s/18YEYlpeMu_6DVTMhhWEnKg 提取码:vb7h ...

qq_43723158的博客 416

五、实战pxe安装ubuntu 22.04 软raid1(实际生产pxe配置)

这段配置文件是一个cloud-init的自动安装配置,用于自动化部署Ubuntu服务器操作系统。它定义了从系统身份、键盘布局、区域设置到磁盘分区和RAID配置的一系列设置,并且包含了在安装过程的最后阶段执行的一些命令。基础设置version: 1指定了autoinstall配置文件的版本。source定义了安装源,这里是ubuntu-server。identity设置了主机名(hostname)、用户(username)和密码(password注意这里的密码是经过加密的。键盘与语言设置。

jundao1997的专栏 999

QQwry到Sqlite3

QQwry是国内很流行的一个中文IP数据库,它使用特别的格式存储IP记录压缩率很高,正因如此,每次升级数据库时得重新下载整库,我希望让它更简单一点,升级只需要下载批量更新数据,我试着把它转换成sqlite3,先贴我的代码Python代码:Created on 2010-4-17@author: Ben@mail: ben.pang.china@gmail.

ben的专栏 1101

AUTOSAR OS Counter讲解

Counter(计数器)以tick为单位记录操作系统中发生了多少“事情”。tick(滴答)是一个抽象的单位。时间,例如毫秒,微妙,分钟等,然后计数器计算过去了多少时间旋转,例如以度或分钟为单位,计数器计算物体旋转了多少按钮按下,计数器计算按钮按下多少次错误,计数器计算错误发生的频次中断(有时是任务)用于驱动一个计数器。该驱动程序负责进行正确的OS API调用来滴答计数器,或者告诉OS计数器已经滴答到一个所需的值。

酒无忧的博客 1073

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

纯真IP数据库项目教程

纯真IP数据库项目教程 项目介绍 纯真IP数据库项目(qqwry)是一个用于查找IP地址归属地的开源工具。该项目支持在Python 3环境中使用,并提供了一个从纯真网络(cz88.net)更新IP数据库的小工具。通过该项目,用户可以快速查询IP地址的地理位置信息,适用于需要IP地址归属地查询的各种应用场景。 项目快速启动 安装 首先,确保你已经安装了Python 3.0或更高版本。然后,使用以下命...

gitblog_00298的博客 500

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python 物理地址_python 使用qqwry.dat获取ip物理地址:速度快

#-*- coding: utf-8 -*-importsocketimportstructclassIPAddresss:def __init__(self, ipdbFile):self.ipdb= open(ipdbFile, "rb")str= self.ipdb.read(8)(self.firstIndex, self.lastIndex)= struct.unpack('II', s...

weixin_39994949的博客 516

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

python3解析纯真ip数据库

这段时间一直再查用户的ip归属地,但是各大爸爸们都是有限制的,像淘宝ip库,百度的都是有限制的,请求太频繁了就不行了。没办法只能手撸了。 然后发现纯真数据库挺不错的。 废话不多说,直接附上代码了,python3 #纯真数据库 import socket import struct class CzIp: def __init__(self, db_file='qqwry.dat'): ...

静待花开时,终有重逢日。 2826

python ipaddr库_python访问纯真IP数据库的代码

核心代码:#!/usr/bin/env python# -*- coding: utf-8 -*-from bisect import bisect_LIST1, _LIST2 = [], []_INIT = Falseip2int = lambda ip_str: reduce(lambda a, b: (a << 8) + b, [int(i) for i in ip_str.sp...

weixin_39974030的博客 355

纯真ip数据库使用方法

纯真围绕IP地址,基于 网络空间拓扑测绘 + 移动位置大数据 方案,对IP地址定位、IP网络风险、IP使用场景、IP网络类型、秒拨侦测、VPN侦测、代理侦测、爬虫侦测、真人度等均有近20年丰富的数据沉淀。纯真数据库有免费和商用两个版本,免费版本目前是一周更新一次且是离线的,但是也足够我们对IP要求不高的业务使用了,对于严重依赖IP的,还是使用商用版本比较好。申请通过后,再次进入这个页面,就是如下的情况,可以直接点击“CZDB下载”来下载IP库,同时也要将密钥复制一下,因为解析CZDB数据文件时要用此密钥。

yang759482201的博客 447

纯真IP库使用方法(Python 3.8)

【代码】纯真IP库使用方法(Python 3.8)

qq_34288715的博客 234

用Python脚本查询纯真IP库

#!/usr/bin/env python # coding: utf-8 # from: http://linuxtoy.org/files/pyip.py # Blog: http://linuxtoy.org/archives/python-ip.html # Modified by Demon # Blog: http://demon.tw/programming/python-qqwr

hiker0x0的专栏 994

java使用python_java调用python方法

最近做了一个东西,需要在java应用调用python的函数。查了网上若干资料,有很多种方法(直接用Jython,etc.),亲测两种最有效的方法在此分享一下。1.使用Runtime.getRuntime()执行脚本文件该方法可以运行含有python第三方库的程序先建立python脚本文件 demo.pyimport numpy as npa = np.arange(12).reshape(3,4)...

weixin_39856709的博客 317

大数据处理过程中知识汇总

背景:接到临时需求,要处理3000w的数据,分为3000个txt文件,而每个文件1万域名。 问题:大量数据无法直接跑,太耗费时间,需首先清洗处理数据; 思路:筛选出有ip的网站进一步看剩下多少域名 1、服务器上32线程分别跑这3000个txt,生成3000个csv文件,里边保存四列数据 2、python pandas 进行数据分析 一、多线程编程知识 思路: 编程实现32线程跑2600个txt,先分list,每个list里边为32个str的数字,作为读取txt的路径以及生成的csv的文件名..

qq_24629175的博客 1089

使用sqlite3创建函数实现ip地址转化并且用该函数确定IP地址所属范围

首先,需要在SQLite3中创建一个函数来实现IP地址转化。可以使用CREATE FUNCTION语句来创建一个函数,并在函数中使用内置的SQLite3函数来实现转化。 示例代码: CREATE FUNCTION ip2int(ip VARCHAR(15)) RETURNS INTEGER BEGIN RETURN (cast(substr(ip, 1, instr(ip, '.') - ...

weixin_35751412的博客 520

php qqwry.dat_利用PHP或者python实现纯真数据库qqwry.dat的自动更新

纯真数据库qqwry.dat的历史很悠久了,到底多少年也算不清了,只记得它比QQ显IP还早,一直到现在很多IP查询网站还是使用的纯真数据库qqwry.dat,并且qqwry.dat也一直在更新,但是纯真网络的qqwry数据库要采用setup.exe安装,对于自动更新数据库来说不太方便,这里收集到两种方法实现定时自动更新纯真数据库qqwry.dat。自动更新纯真数据库qqwry.dat的原理是:从c...

weixin_28952093的博客 934
上一篇: QQwry到Sqlite3
下一篇: 母亲节的祝福
bkzone
博客等级 码龄19年 10粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值