python处理IP对应城市省份

news2025/1/18 17:07:46

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.database

def 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_info
    except 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.coloradmin.cn/o/1608313.html

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

相关文章

代码随想录第41天| 96.不同的二叉搜索树 动态规划:01背包理论基础

96.不同的二叉搜索树 96. 不同的二叉搜索树 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 动态规划找到子状态之间的关系很重要!| LeetCode:96.不同的二叉搜索树_哔哩哔哩_bilibili 给你一个整数 n ,求恰由 n 个…

【随笔】Git 基础篇 -- 拉取数据 git pull(二十八)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

STM32电机控制固件架构

目录 一、应用程序剖析 二、面向现场的控制实现体系结构 1、参考计算循环 2、电流调节环路 3、安全回路 一、应用程序剖析 上图显示了由ST MC SDK构建的电机控制应用程序。首先,这样的应用程序是由电机控制工作台生成的软件项目,这要归功于STM32Cube…

程序员副业指导

程序员如何搞副业? 程序员不仅拥有将抽象概念转化为实际应用的能力,还通常具备强大的逻辑思维和问题解决能力。然而,许多程序员并不满足于仅仅在一家公司工作,他们渴望通过副业来实现个人价值的最大化,增加收入&#…

【华为 ICT HCIA eNSP 习题汇总】——题目集17

1、以下哪项不属于网络层安全威胁? A、DDos攻击 B、钓鱼攻击 C、IP Spoofing D、IP地址扫描 考点:网络安全 解析:(B) 钓鱼攻击通常被认为是应用层的安全威胁,也有在网络层进行伪装实施钓鱼攻击,…

gemini国内怎么用

gemini国内怎么用 Google Gemini 作为一个尚处于研发阶段的大型语言模型,其具体功能和性能尚未公开,因此无法对其好用程度做出明确评价。 然而,基于 Google 在人工智能领域的领先地位和技术实力,我们可以对其潜力进行一些推测&a…

系统设计到撸代码?我用了这些方法和工具

大家好,我是老猫。今天和大家分享一下程序员日常的绘图思路,以及一些老猫日常使用的绘图工具。 为什么要画图? 我们在进行系统设计的时候,为了更加具象地呈现系统的轮廓以及各个组件或者系统之间的关系和边界以及工作流程。我们…

大模型项目整体规划、技术选型和案例分析经验分享

1 项目整体规划 1.1 明确场景 toB or toC(面向企业还是面向消费者) toB(面向企业):指的是产品或服务主要面向其他企业或组织。这类产品通常需要解决特定的商业问题,强调效率和集成性,并且可能需…

wordpress建网站主题案例推荐

wordpress企业网站主题案例 https://www.mymoban.com/wordpress/ wordpress公司官网主题案例 https://www.wowsoho.com/jianzhan wordpress外贸主题案例 https://www.wpniu.com/moban

牛客NC314 体育课测验(一)【中等 图,BFS,拓扑排序 Java,Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/1a16c1b2d2674e1fb62ce8439e867f33 核心 图,BFS,拓扑排序,队列参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修…

js实现抽奖效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>随机抽奖</title> </head> <body>…

kubernetes学习

1、应用部署方式演变 2、kubernetes介绍 3、kubernetes组件 4、kubernetes概念 5、环境搭建-环境规划 集群类型&#xff1a; 安装方式&#xff1a; 主机规划&#xff1a; 6、环境搭建-主机安装 使用虚拟机安装三台centos7&#xff08;一主二从&#xff09;&#xff0c;然后在…

汽车IVI中控开发入门及进阶(十五):AUTOSAR

前言: 随着汽车四化的进行,汽车电子系统standard标准化和coperation互操作性变得重要, AUTOSAR(AUTomotive Open System Architecture 汽车开放系统架构)框架已成为汽车行业的基础支柱。 AUTOSAR始自2000年,当时认识到标准化是有必要

日志情况分析

日志是用来记录信息的&#xff0c;更多是方便于查看各种出错信息。时间、日志等级、日志内容、文件名称已经行号都会显示出来&#xff01;日志等级是什么&#xff1f;就是当出问题时&#xff0c;根据问题成都列出等级 Info:常规消息 Debug&#xff1a;t调试信息 Waring:报警信息…

C++学习进阶:智能指针

目录 前言&#xff1a; 1.知识引入 1.1.异常安全问题 1.2.RALL和智能指针雏形 2.智能指针的发展 2.1.auto_ptr的引入 2.2.unique_ptr的引入 2.3.救世主shared_ptr&#xff08;重点&#xff09; 2.4.weak_ptr的引入&#xff08;重点&#xff09; 2.5.测试函数 3.定制删…

sqli-labs靶场学习(一)

一.知识点 1.数据库 数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储&#xff0c;可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统&#xff0c;按照一定的逻辑结构组织数据&#xff0c;以方便高效地访问和维护。 2.数据库管…

MDC及EFK安装与使用

MDC 1.简介 MDC 介绍​ MDC&#xff08;Mapped Diagnostic Context&#xff0c;映射调试上下文&#xff09;是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的Map&#xff0c;可以往其中添加键值对。MDC 中包含的内容可以…

Aurora 协议学习理解与应用——Aurora 64B66B协议学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Aurora 协议学习理解与应用——Aurora 64B66B协议学习 概述数据发送和接收帧传输过程链路层帧描绘64B/66B 编码多lane传输 帧接收过程Control Block Stripping 控制块剥离多l…

Scala 04 —— 函数式编程底层逻辑

函数式编程 底层逻辑 该文章来自2023/1/14的清华大学交叉信息学院助理教授——袁洋演讲。 文章目录 函数式编程 底层逻辑函数式编程假如...副作用是必须的&#xff1f;函数的定义函数是数据的函数&#xff0c;不是数字的函数如何把业务逻辑做成纯函数式&#xff1f;函数式编程…

Oracle数据库的简单使用

Oracle简单使用 一、数据库的介绍二、Oracle介绍账号管理Oracle的安装Oracle服务的作用OracleRemExecService服务创建数据库 常用命令 三、SQL语言SQL分类实用的数据表添加注释数据操纵语言&#xff08;DML&#xff09;查询语句&#xff08;SELECT&#xff09;wherelikedistinc…