吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4976|回复: 13
收起左侧

[Python 转载] 号码归属地库

  [复制链接]
ForGot_227 发表于 2021-9-11 13:53
本帖最后由 ForGot_227 于 2021-9-12 11:02 编辑

号码归属地库

数据库的号码归属地是18年之前的,因为出现很多号码新号码不识是的问题,所以需要更新一遍。

在此之前我想了下流程,主要是分以下几步。

  1. 获取号码和区域代码(区号)

  2. 制作区号代码字典(区号,省份,城市)

  3. 根据区号补充号码的省份和城市(号码,区号,身份,城市)

  4. 拼接插库语句

获取号码和区域代码

这里我采用很久之前看到的GitHub上一位大佬的库,使用PHP拉取3大运营商的号码和区号,我直接取用大佬拉好的数据。

hxTrGD.png

数据格式如下

1330010 010
1330011 010
1330018 021

制作区号代码字典

根据我从之前数据库拉出来的区号信息制作字典。

数据格式如下,并保存至txt文本中

00852        香港        香港
010        北京        北京
020        广东        广州

具体方法如下,让python逐行读取文本内容,分割文本之后存入list,然后再依次存入两个字典中。

#初始化参数
province = {}      #创建空字典省份
city = {}          #创建空字典城市
a_dist = open('./dist.txt', 'r', encoding='UTF-8')     #读取文件,使用utf-8格式使用

#读取,分割,制作字典
for line in a_dist:
    lines = line.replace('\n', '')    #可能存在换行符,影响结果,这里置换为空
    split = lines.split('\t')         #以制表符为分割点,分割
    province[split[0]] = split[1]     #添加区号查询的省份字典
    city[split[0]] = split[2]         #添加区号查询的城市字典
a_dist.close()

根据区号补充号码的省份和城市

根据上面两个步骤得出的数据可以生成一份,号码-区号-省份-城市 的对应数据。

a_10000 = ('./10000.txt', 'r', encoding='UTF-8')
for number in a_10000:
    lines = line.replace('\n', '')
    split = lines.split(' ')               #同理可得对应list
    #写入txt文件
    try:
        w_txt = open('./dianxin.sql', 'a', encoding='UTF-8')  # 'a' 为追加模式,请确保文本为空
        w_txt.write('号码:%s,区号:%s,省份:%s,城市:%s' % (split[0], split[1], province[split[1]], city[a[1]]))
    excrpt:
        print(split[0])    #打印号码
        print(split[1])    #打印区号
        f_name.close()

拼接插库语句

根据写入文件的方法自行修改

a_10000 = ('./10000.sql', 'r', encoding='UTF-8')
for number in a_10000:
    lines = line.replace('\n', '')
    split = lines.split(' ')               #同理可得对应list
    #写入txt文件
    try:
        w_txt = open('./dianxin.sql', 'a', encoding='UTF-8')  # 'a' 为追加模式,请确保文本为空
        w_txt.write('INSERT into splitresplitNumber  (Number,splitresplitNumber,Province,City) VsplitLUES (\'%s\',\'%s\',\'%s\',\'%s\');\n' % (split[0], split[1], province[split[1]], city[split[1]]))
    excrpt:
        print(split[0])    #打印号码
        print(split[1])    #打印区号
        f_name.close()

接着执行sql文件,就能愉快的添加了。

dist.txt (7.04 KB, 下载次数: 96)

初学方法,比较费时费力。欢迎吐槽~

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| ForGot_227 发表于 2021-9-12 10:42
superX009 发表于 2021-9-11 16:27
携号转网已经开通2年多了。光靠号段,是没法识别归属运营商的了。你这个程序能识别携号转网的号码?不行的 ...

这个无所谓,归属地没变就行。
superX009 发表于 2021-9-11 16:27
携号转网已经开通2年多了。光靠号段,是没法识别归属运营商的了。你这个程序能识别携号转网的号码?不行的吧。携号转网的号,好像都不公开的,运营商内部的秘密数据。
郑州张衡 发表于 2021-9-11 16:09
motanzhen 发表于 2021-9-11 16:34
没有成品下载地址么
xkw 发表于 2021-9-11 17:29
有没有半成品
1e3e 发表于 2021-9-11 18:00
号码和区域代码呢
xcsun333 发表于 2021-9-11 19:46
学习下,路过
dzqaww 发表于 2021-9-12 10:41
怎么用呢?
 楼主| ForGot_227 发表于 2021-9-12 10:44

核心代码都在这了,你还想要啥?把你推进门吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表