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.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'])

展示结果

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LINUX网卡一般性问题分析

一、网卡相关概念 网卡:网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件。 网络模型:OSI网络模型、TCP/IP网络模型 LINUX网络收发流程: 1. 内核分配一个主内存地址段(DMA缓冲区),网卡设备可以在…

混合云自动化优势有哪些?

随着云计算领域变得更加动态,全球各地的组织都开始将混合云作为其IT基础设施效率、灵活性、安全性、可扩展性和成本效益的支柱。混合云将本地数据中心与公有云结合起来,为企业提供了灵活性和可扩展性,同时又能满足其对安全性、合规性和控制力…

整除分块(上下取整)

参考: 整除分块 - 知乎 董晓算法 G33 整除分块(数论分块) 图都是摘的上面的。 整除分块 整除分块是数论中的一个知识点。一个整除式子在分母不固定的时候,得到的结果也有可能不同,但是因为是整除,所以…

登录解析(前端)

登录代码 1、登录之后做了什么? 执行登陆方法,成功之后,路由跳转到指定路径或者根目录 2、this.$store.dispatch是什么意思? this.$store.dispatch(‘Login’, this.loginForm) 来调取store里的user.js的login方法3、this.$r…

【学习】自动化测试有哪些优势和不足

在当今这个数字化时代,软件测试已经成为了任何一款产品成功的关键因素之一。而在诸多的测试方法中,自动化测试凭借着其独特的魅力吸引着越来越多的企业。今天就让我们一起走进自动化测试的世界,探讨它的优势与不足。 一、自动化测试优势 1.…

强化学习入门之MDP

系列文章目录 第一章 强化学习入门之基本概念 第二章 强化学习入门之MDP 强化学习入门之MDP 系列文章目录前言1. 简介1.1 状态值函数1.2 状态动作值函数1.3 策略 2. 最优策略求解2.1 思想2.2 策略评估2.3 策略改进 3. 最优值函数求解 前言 我们已经知道使用MDP来对强化学习进…

对比实验系列:Efficientdet环境配置及训练个人数据集

一、源码下载 可以通过下方链接下载Efficientdet源码 GitHub - zylo117/Yet-Another-EfficientDet-Pytorch: The pytorch re-implement of the official efficientdet with SOTA performance in real time and pretrained weights.The pytorch re-implement of the official …

检测一切YOLO-World的几个实用使用技巧,助力精准高效目标检测任务!

引言 YOLO-World 是一种最先进的零样本目标检测模型。您可以向 YOLO-World 提供任意文本提示,让模型在没有任何微调的情况下识别图像中的对象实例。没有预定义的类别列表;您需要尝试不同的提示,看看模型是否能够以对您的项目可接受的标准来识…

登录解析(后端)

调试登录接口 进入实现类可以有 验证码校验 登录前置校验 用户验证 验证码校验 通过uuid获取redis 中存储的验证码信息,获取后对用户填写的验证码数据进行校验比对 用户验证 1.进入控制器的 /login 方法 2.进入security账号鉴权功能,经过jar内的流…

element plus el-date-picker type=“datetime“ 限制年月日 时分秒选择

如何限制el-date-picker组件的时分秒选中!!!!!!! 文档 文档在这里:DateTimePicker 日期时间选择器 | Element Plus 它提供的disabled-date给我们来限制日期选择 nice!&…

Linux的图形资源及指令

一、火车 1.切换到超级用户 su 2.下载资源 yum install -y sl 3.输入指令 sl,得到火车图形 如果没有得到该图形,就将2处改为yum install -y epel-release。 二、Linux的logo 1.在超级用户模式下下载资源 yum install -y linux_logo 2.输…

Microchip逆市扩张,接连收购2家公司

尽管年初传来降薪停工的消息,全球领先的半导体解决方案供应商Microchip并未因此停下扩张的脚步。相反,该公司在短短的一个月内,接连宣布收购两家公司,展现了其坚定的市场布局和前瞻的战略眼光。 4月11日,Microchip成功…

【JavaEE初阶系列】——网络原理之进一步了解应用层以及传输层的UDP协议

目录 🚩进一步讲应用层 🎈自定义应用层协议 🎈用什么格式组织 👩🏻‍💻xml(远古的数据组织格式) 👩🏻‍💻json(当下最流行得一种数据组织格式) 👩&…

1097 矩阵行平移(语文题,选做)

输入样例: 7 2 99 11 87 23 67 20 75 89 37 94 27 91 63 50 11 44 38 50 26 40 26 24 73 85 63 28 62 18 68 15 83 27 97 88 25 43 23 78 98 20 30 81 99 77 36 48 59 25 34 22 输出样例: 529 481 479 263 417 342 343 样例解读 需要平移的是第 1、…

ZYNQ-Vitis(SDK)裸机开发之(八)PS端QSPI读写flash操作(包括SPI、Dual SPI、Qual SPI的配置使用)

目录 一、Flash知识简介 二、SPI知识简介 1.SPI引脚介绍 2.SPI协议介绍 3.ZYNQ Quad SPI说明 三、Vivado工程搭建 四、编写Vitis程序 1.ZYNQ QSPI Flash操作的格式: 2.头文件:qspi_hdl.h 3.源文件:qspi_hdl.c 4.编写QSPI Flash读写…

已经下载了pytorch,但在正确使用一段时间后出现No module named torch的错误

问题描述 使用的是叫做m2release的虚拟环境,在此环境下使用conda list可以发现是存在pytorch的,但是运行代码时却报No module named torch的错误。 解决方案 想尝试卸掉这个pytorch重新装一次,但是想卸载会提示找不到,想重新…

redis写入和查询

import redis #redis的表名 redis_biao "Ruijieac_sta" #redis连接信息 redis_obj redis.StrictRedis(hostIP地址, port6379, db1, password密码) # keyytressdfg # value22 ##写入 # redis_obj.hset(redis_biao, key, value) #查询 req_redisredis_obj.hget(red…

Python面试十问

深浅拷贝的区别? 浅拷⻉: 拷⻉的是对象的引⽤,如果原对象改变,相应的拷⻉对象也会发⽣改变。 深拷⻉: 拷⻉对象中的每个元素,拷⻉对象和原有对象不在有关系,两个是独⽴的对象。 浅拷⻉(copy)…

selenium_定位tag_name

第一个input """需求:1. 使用tag_name定位方式,使用注册A.html页面,用户名输入admin方法:1. driver.find_element_by_tag_name("") # 定位元素方法2. send_keys() # 输入方法3. driver.quit() # 退出方…

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

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