python处理IP对应城市省份

python处理IP对应城市省份

IP地理地址库geoip2用法

数据包下载

数据包下载地址(需要注册)
https://www.maxmind.com/en/accounts/258630/geoip/downloads
考虑到注册麻烦,可以到下面这个github的链接去直接下载
https://github.com/Hackl0us/GeoIP2-CN.git
在这里插入图片描述
在这里插入图片描述

代码

import os
import pprint
import geoip2.databasedef query_ip_location(ip_address, locales='zh-CN'):"""查询IP地址的地理位置信息:param ip_address: IP地址:param locales: 国际化(如果locales不指定的话会默认输出英文我这里指定了中文):return: 返回IP信息"""#db_path = os.path.dirname(__file__) + '/Country.mmdb'db_path = r'E:\ghm\加速器\GeoLite2-City.mmdb'if not os.path.exists(db_path):raise FileNotFoundError('GeoLite2-City数据库不存在')try:with geoip2.database.Reader(db_path, locales=[locales]) as reader:response = reader.city(ip_address)location_info = {'country_name': response.country.name,  # 国家名称,中文显示'country_iso_code': response.country.iso_code,  # 国家ISO代码'province_name': response.subdivisions.most_specific.name,  # 省份名称,中文显示'province_iso_code': response.subdivisions.most_specific.iso_code,  # 省份ISO代码'city_name': response.city.name,  # 城市名称,中文显示'postal_code': response.postal.code,  # 邮政编码'latitude': response.location.latitude,  # 纬度'longitude': response.location.longitude,  # 经度'time_zone': response.location.time_zone,  # 时区'continent_name': response.continent.name,  # 大陆名称,中文显示'continent_code': response.continent.code  # 大陆代码}return location_infoexcept Exception as e:print(f"查询IP地址时发生错误: {e}")return {}if __name__ == '__main__':# 使用示例ip = '113.68.255.182'ip_info = query_ip_location(ip)pprint.pprint(ip_info['province_name']+ip_info['city_name'])

展示结果

在这里插入图片描述
这是展示的详细数据:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-9.python文件操作

文件操作 引言 到目前为止,我们做的一切操作,都是在内存里进行的,这样会有什么问题吗?如果一旦断电或发生意外关机了,那么你辛勤的工作成果将瞬间消失。是不是感觉事还挺大的呢?现在你是否感觉你的编程技…

【Java EE】依赖注入DI详解

文章目录 🌴什么是依赖注入🍀依赖注入的三种方法🌸属性注入(Field Injection)🌸构造方法注入🌸Setter注入🌸三种注入优缺点分析 🌳Autowired存在的问题🌲解决Autowired对应多个对象问…

动态库静态库linux

动态库静态库 静态库 静态库必须包含在可执行文件里,整个都要包含 缺点:消耗系统大,每个使用静态库的程序都要复制静态库(浪费内存) 影响使用场景: 在静态库内存小的时候,可以用来提升速度 制…

Scala 03 —— Scala Puzzle 拓展

Scala 03 —— Scala Puzzle 拓展 文章目录 Scala 03 —— Scala Puzzle 拓展一、占位符二、模式匹配的变量和常量模式三、继承 成员声明的位置结果初始化顺序分析BMember 类BConstructor 类 四、缺省初始值与重载五、Scala的集合操作和集合类型保持一致性第一部分代码解释第二…

【C++】<入门>C++入门基础知识

C入门 1. 入门0. 本节知识点熟悉目的1. C关键字(C98) 2. 命名空间2.1 命名空间定义2.2 命名空间使用 3. C输入&输出4. 缺省参数4.1 缺省参数概念4.2 缺省参数分类 5. 函数重载5.1 函数重载概念5.2 C支持函数重载的原理--名字修饰(name Ma…

Vue3从入门到实践:深度了解新组件

1.Teleport 概念:Teleport(传送门)是一个新的特性,用于在DOM中的任意位置渲染组件。它允许你将组件的内容渲染到DOM中的另一个位置,而不受组件层次结构的限制。 下面举出例子解释: 1.新建App.vue文件作…

RACE IPEMD:构建安全基石的密码学原理与实践

title: RACE IPEMD:构建安全基石的密码学原理与实践 date: 2024/4/16 16:53:56 updated: 2024/4/16 16:53:56 tags: IPEMD哈希算法SHA-1SHA-2/3消息摘要数字签名安全分析 前言 在当今信息爆炸的时代,数据安全和隐私保护变得尤为重要。密码学作为信息安…

计算机视觉——基于OpenCV和Python进行模板匹配

模板匹配? 模板匹配是它允许在一幅较大的图像中寻找是否存在一个较小的、预定义的模板图像。这项技术的应用非常广泛,包括但不限于图像识别、目标跟踪和场景理解等。 目标和原理 模板匹配的主要目标是在一幅大图像中定位一个或多个与模板图像相匹配的…

最小生成树算法的实现c++

最小生成树算法的实现c 题目链接:1584. 连接所有点的最小费用 - 力扣(LeetCode) 主要思路:使用krusal算法,将边的权值进行排序(从小到大排序),每次将权值最小且未加入到连通分量中…

Cesium中实现镜头光晕

镜头光晕 镜头光晕 (Lens Flares) 是模拟相机镜头内的折射光线的效果,主要作用就是让太阳光/其他光源更加真实,和为您的场景多增添一些气氛。 Cesium 中实现 其实 Cesium 里面也是有实现一个镜头光晕效果的,添加方式如下,只是效…

Python教学入门:数字类型与字符串

字符串元素组成的序列 字符串元素组成的序列指的是字符串中的每个字符按照一定的顺序排列形成的序列。在 Python 中,字符串是由字符组成的有序序列(Sequence),每个字符在字符串中有其固定的位置(索引)&…

Android RecyclerView的LayoutManager配置

RecyclerView的item布局方式依赖于其配置的布局管理器。不同的布局管理器可以实现不同的界面效果。 LayoutManager介绍 RecyclerView可以通过setLayoutManager设置布局管理器,该方法的源码如下: /*** Set the {link LayoutManager} that this RecyclerV…

java网络编程 BufferedReader的readLine方法读不到数据且一直阻塞

最近在整理Java IO相关内容,会遇到一些以前没有注意的问题,特此记录,以供自查和交流。 需求: 基于Java的BIO API,实现简单的客户端和服务端通信模型,客户端使用BufferedReader的readLine方法读取System.i…

ASPICE 追溯性实践分享

01前言 接着之前的分享,遗留的追溯性ASPICE 认证实践及个人理解分享-CSDN博客文章浏览阅读961次,点赞22次,收藏17次。ASPICE是Automotive 和SPICE的组合,全英文为(Automotive Software ProcessImprovement and Determ…

C++修炼之路之继承<二>

目录 一:子类的六大默认成员函数 二:继承与友元 三:继承与静态成员 四:复杂的继承关系菱形继承菱形虚拟继承 1.单继承 2.多继承 3.菱形继承;一种特殊的多继承 4.菱形虚拟继承 5.虚拟继承解决数据冗余和二…

小程序 前端如何用wx.request获取 access_token接口调用凭据

在微信小程序中,获取access_token通常是通过wx.request方法来实现的。以下是一个简单的示例代码: 1.获取小程序的appID 与 secret(小程序密钥) 登录之后,请点击左侧的"开发管理"==>点击"开发设置" 就可以找到 2. 在javascript 中的代码: // 定…

性能优化工具

CPU 优化的各类工具 network netperf 服务端&#xff1a; $ netserver Starting netserver with host IN(6)ADDR_ANY port 12865 and family AF_UNSPEC$ cat netperf.sh #!/bin/bash count$1 for ((i1;i<count;i)) doecho "Instance:$i-------"# 下方命令可以…

算法刷题记录2

4.图 4.1.被围绕的区域 思路&#xff1a;图中只有与边界上联通的O才不算是被X包围。因此本题就是从边界上的O开始递归&#xff0c;找与边界O联通的O&#xff0c;并标记为#&#xff08;代表已遍历&#xff09;&#xff0c;最后图中剩下的O就是&#xff1a;被X包围的O。图中所有…

温湿度传感器(DHT11)以及光照强度传感器(BH1750)的使用

前言 对于一些单片机类的环境检测或者智能家居小项目中&#xff0c;温湿度传感器&#xff08;DHT11&#xff09;以及光照强度传感器&#xff08;BH1750&#xff09;往往是必不可少的两个外设&#xff0c;下面我们来剖析这两个外设的原理&#xff0c;以及使用。 1. 温湿度传感…

嵌入式4-18

做一个简单数据库终端操作系统 #include <myhead.h> int main(int argc, const char *argv[]) {int id;char name[16];float score;sqlite3 *pNULL;if(sqlite3_open("./my.db",&p)!SQLITE_OK){printf("sqlite3_open error\n");return -1;} …