最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python通過(guò)IP地址查詢地理位置的幾種方法

 更新時(shí)間:2025年09月25日 09:28:28   作者:Humbunklung  
本文介紹通過(guò)IP查詢地理位置的兩種方法:在線API(如ipinfo.io,快速但有請(qǐng)求限制)和本地?cái)?shù)據(jù)庫(kù)(如GeoLite2,高效但需定期更新),并推薦結(jié)合使用以滿足不同場(chǎng)景需求,需要的朋友可以參考下

一、在線API查詢(簡(jiǎn)單快速,依賴網(wǎng)絡(luò))

1. 使用 requests + ipinfo.io

  • 原理:調(diào)用免費(fèi)API返回JSON格式的地理信息(國(guó)家、城市、經(jīng)緯度等)。
  • 代碼示例
import requests

def get_ip_info(ip):
    response = requests.get(f"https://ipinfo.io/{ip}/json")
    if response.status_code == 200:
        data = response.json()
        return {
            'IP': data.get('ip'),
            '城市': data.get('city'),
            '地區(qū)': data.get('region'),
            '國(guó)家': data.get('country'),
            '經(jīng)緯度': data.get('loc').split(',') if data.get('loc') else None
        }
    return None

print(get_ip_info("66.235.200.109"))  # 示例IP
{'IP': '66.235.200.109', '城市': 'Jacksonville', '地區(qū)': 'Florida', '國(guó)家': 'US', '經(jīng)緯度': ['30.2214', '-81.5571']}
  • 優(yōu)點(diǎn):無(wú)需本地?cái)?shù)據(jù)庫(kù),快速部署。
  • 缺點(diǎn):免費(fèi)版有請(qǐng)求限制,隱私數(shù)據(jù)需謹(jǐn)慎。

2. 使用 requests + ip-api.com

  • 特點(diǎn):返回更詳細(xì)的運(yùn)營(yíng)商信息。
  • 代碼示例
response = requests.get(f"http://ip-api.com/json/206.238.237.128")
data = response.json()
print(data['country'], data['isp'])  # 國(guó)家、運(yùn)營(yíng)商
Singapore Tcloudnet

二、本地?cái)?shù)據(jù)庫(kù)查詢(離線高效,需下載數(shù)據(jù)庫(kù))

1. 使用 geoip2 + GeoLite2 數(shù)據(jù)庫(kù)

  • 原理:加載MaxMind的免費(fèi)數(shù)據(jù)庫(kù)文件(GeoLite2-City.mmdb)。
  • 步驟
    1. 下載數(shù)據(jù)庫(kù):MaxMind官網(wǎng)(需注冊(cè))。
    2. 安裝庫(kù):pip install geoip2uv add geoip2
  • 代碼示例
import geoip2.database

def get_location(ip, db_path='GeoLite2-City.mmdb'):
    try:
        reader = geoip2.database.Reader(db_path)
        response = reader.city(ip)
        return {
            '國(guó)家': response.country.name,
            '省份': response.subdivisions.most_specific.name,
            '城市': response.city.name,
            '經(jīng)緯度': (response.location.latitude, response.location.longitude)
        }
    except Exception as e:
        return str(e)

print(get_location("61.160.202.122"))  # 國(guó)內(nèi)IP示例
print(get_location("172.67.182.90"))    # 國(guó)外IP示例
{'國(guó)家': 'China', '省份': None, '城市': None, '經(jīng)緯度': (34.7732, 113.722)}
{'國(guó)家': None, '省份': None, '城市': None, '經(jīng)緯度': (None, None)}
  • 優(yōu)點(diǎn):離線可用,查詢速度快(毫秒級(jí))。
  • 缺點(diǎn):數(shù)據(jù)庫(kù)需定期更新(每月),精確度略低于商業(yè)版。

2. 其他本地庫(kù)對(duì)比

  • pygeoip(僅Python 2)或 ip2geotools(多數(shù)據(jù)源),但geoip2是當(dāng)前主流方案。

三、結(jié)果可視化(增強(qiáng)展示)

使用 folium 生成交互地圖

  • 適用場(chǎng)景:將查詢到的經(jīng)緯度在地圖上標(biāo)記。
  • 代碼示例
import folium

def plot_on_map(lat, lon, city):
    map = folium.Map(location=[lat, lon], zoom_start=10)
    folium.Marker([lat, lon], popup=city).add_to(map)
    map.save("ip_location.html")  # 生成HTML地圖

# 結(jié)合API或數(shù)據(jù)庫(kù)獲取經(jīng)緯度后調(diào)用
lat, lon = 37.4056, -122.0775
plot_on_map(lat, lon, "California")

四、方法選擇建議

方法適用場(chǎng)景精度速度依賴
在線API(ipinfo)快速驗(yàn)證、少量查詢網(wǎng)絡(luò)
本地GeoLite2高頻查詢、隱私敏感場(chǎng)景中高本地?cái)?shù)據(jù)庫(kù)文件
地圖可視化結(jié)果展示、數(shù)據(jù)分析報(bào)告--需經(jīng)緯度數(shù)據(jù)

推薦組合

  • 常規(guī)需求:geoip2 + 本地?cái)?shù)據(jù)庫(kù)(免費(fèi)且高效)。
  • 實(shí)時(shí)性要求低:在線API(避免維護(hù)數(shù)據(jù)庫(kù))。

通過(guò)上述方法,可靈活實(shí)現(xiàn)IP到地理位置的轉(zhuǎn)換,滿足安全分析、用戶畫(huà)像等場(chǎng)景需求。

以上就是Python通過(guò)IP地址查詢地理位置的幾種方法的詳細(xì)內(nèi)容,更多關(guān)于Python IP地址查詢地理位置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Django自定義用戶表+自定義admin后臺(tái)中的字段實(shí)例

    Django自定義用戶表+自定義admin后臺(tái)中的字段實(shí)例

    今天小編就為大家分享一篇Django自定義用戶表+自定義admin后臺(tái)中的字段實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • python使用turtle繪制國(guó)際象棋棋盤(pán)

    python使用turtle繪制國(guó)際象棋棋盤(pán)

    這篇文章主要為大家詳細(xì)介紹了python使用turtle畫(huà)國(guó)際象棋棋盤(pán),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Python的Darts庫(kù)實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)

    Python的Darts庫(kù)實(shí)現(xiàn)時(shí)間序列預(yù)測(cè)

    Darts一個(gè)集統(tǒng)計(jì)、機(jī)器學(xué)習(xí)與深度學(xué)習(xí)模型于一體的Python時(shí)間序列預(yù)測(cè)庫(kù),本文主要介紹了Python的Darts庫(kù)實(shí)現(xiàn)時(shí)間序列預(yù)測(cè),感興趣的可以了解一下
    2025-09-09
  • python IP地址轉(zhuǎn)整數(shù)

    python IP地址轉(zhuǎn)整數(shù)

    這篇文章主要介紹了python 如何將IP 地址轉(zhuǎn)整數(shù),幫助大家了解轉(zhuǎn)換的原理與收益,更好的理解python,感興趣的朋友可以了解下
    2020-11-11
  • python線程池(threadpool)模塊使用筆記詳解

    python線程池(threadpool)模塊使用筆記詳解

    這篇文章主要介紹了python線程池(threadpool)模塊使用筆記詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié)

    Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié)

    這篇文章主要介紹了Python3.2中的字符串函數(shù)學(xué)習(xí)總結(jié),本文講解了格式化類方法、查找 & 替換類方法、拆分 & 組合類方法等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Python中斷言Assertion的一些改進(jìn)方案

    Python中斷言Assertion的一些改進(jìn)方案

    python中的斷言Assertion使用起來(lái)很方便,但是也不盡如人意的地方,所以這篇文章通過(guò)幾個(gè)方面對(duì)Python中的斷言進(jìn)行了改進(jìn),感興趣的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-10-10
  • 深入了解Python enumerate和zip

    深入了解Python enumerate和zip

    這篇文章主要介紹了Python enumerate和zip的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • Python使用Altair創(chuàng)建交互式數(shù)據(jù)可視化的操作指南

    Python使用Altair創(chuàng)建交互式數(shù)據(jù)可視化的操作指南

    Altair 是一個(gè)基于 Vega-Lite 的 Python 數(shù)據(jù)可視化庫(kù),它旨在簡(jiǎn)化數(shù)據(jù)可視化的創(chuàng)建過(guò)程,尤其適用于統(tǒng)計(jì)圖表的生成,Altair 強(qiáng)調(diào)聲明式編碼方式,通過(guò)簡(jiǎn)單的語(yǔ)法,用戶能夠快速創(chuàng)建復(fù)雜的交互式圖表,本文將介紹 Altair 的基礎(chǔ)用法、常見(jiàn)圖表類型,需要的朋友可以參考下
    2024-12-12
  • 關(guān)于CUDA out of memory的解決方案

    關(guān)于CUDA out of memory的解決方案

    這篇文章主要介紹了關(guān)于CUDA out of memory的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論

巩义市| 江门市| 康乐县| 台南市| 云浮市| 新余市| 梓潼县| 辽阳县| 北海市| 桦甸市| 罗江县| 大方县| 咸阳市| 贵州省| 吉林省| 克什克腾旗| 溧水县| 诏安县| 泰兴市| 来安县| 响水县| 奇台县| 安庆市| 湖州市| 安平县| 迭部县| 汉寿县| 五指山市| 兴隆县| 观塘区| 陈巴尔虎旗| 新干县| 四子王旗| 沿河| 固镇县| 阿克陶县| 巴里| 黎平县| 扶沟县| 凤台县| 治多县|