Python獲取IP的地理位置:經(jīng)緯度,國家,區(qū)域,城市

人人可以學(xué)Python .png

我們現(xiàn)在手機(jī)使用的定位主要是以GPS衛(wèi)星為主,A-Gps,IP輔助定位。而網(wǎng)站還是通過瀏覽網(wǎng)頁用戶的IP來得到用戶的地理位置,通過分析,調(diào)整業(yè)務(wù)。
GeoIP2
很多公司都是使用Maxmind網(wǎng)站的IP信息庫,里面包含著IP的詳細(xì)信息,有付費的也有免費的,收費與免費的區(qū)別就是精準(zhǔn)度和覆蓋率
GeoIP也有python的lib,有GeoIP,和GeoIP2,在這里我們就拿GeoIP2來試一試獲取一個IP的地理位置。

GeoIP2安裝###

安裝GeoIP2還是一樣:
命令安裝:

pip install geoip2

也可以去Github網(wǎng)站下載安裝

地址:https://github.com/maxmind/GeoIP2-python

GeoIP2使用###

使用我們剛才安裝的包,我們可以使用Maxmind的在線庫也可以把庫下載下來離線使用。
先來看看離線庫的使用:

先去這里下載一個庫

http://dev.maxmind.com/geoip/geoip2/geolite2 
人人可以I學(xué)Python2.jpg

我這里就下載個GeoLite2 City使用。

然后我們的python代碼如下:

#!/usr/bin/python
#-*-coding:utf-8-*-
import geoip2.database
reader = geoip2.database.Reader('./GeoLite2-City.mmdb')
ip = raw_input("輸入你要查詢的IP:\n")
response = reader.city(ip)
# 有多種語言,我們這里主要輸出英文和中文
print("你查詢的IP的地理位置是:")

print("地區(qū):{}({})".format(response.continent.names["es"],
                                       response.continent.names["zh-CN"]))

print("國家:{}({}) ,簡稱:{}".format(response.country.name,
                                                        response.country.names["zh-CN"],
                                                        response.country.iso_code))

print("洲/?。簕}({})".format(response.subdivisions.most_specific.name,
                                          response.subdivisions.most_specific.names["zh-CN"]))

print("城市:{}({})".format(response.city.name, 
                                          response.city.names["zh-CN"]))

print("經(jīng)度:{},緯度{}".format(response.location.longitude,
                                            response.location.latitude))

print("時區(qū):{}".format(response.location.time_zone))

print("郵編:{}".format(response.postal.code))

試一試

(venv) allenwoo@~/renren/code$ python test.py 
輸入你要查詢的IP:
112.74.207.96
你查詢的IP的地理位置是:
地區(qū):Asia(亞洲)
國家:China(中國) ,簡稱:CN
洲/省:Zhejiang(浙江省)
城市:Hangzhou(杭州)
經(jīng)度:120.1614,緯度30.2936
時區(qū):Asia/Shanghai
郵編:None

再來一個:

(venv) allenwoo@~/renren/code$ python test.py 
輸入你要查詢的IP:
223.192.2.165
你查詢的IP的地理位置是:
地區(qū):Asia(亞洲)
國家:China(中國) ,簡稱:CN
洲/省:Beijing(北京市)
城市:Beijing(北京)
經(jīng)度:116.3883,緯度39.9289
時區(qū):Asia/Shanghai
郵編:None

2.至于在線庫的使用是需要一個license_key
只有前面兩步不太一樣
連接: client = geoip2.webservice.Client(42, <license_key>)
查詢 IP: response = client.insights(<IP>)

好了,到此為止,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,695評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,844評論 6 427
  • 匆匆四年,一晃而過。我還來不及和朋友好好互道珍重,離別就呼嘯而至。依稀記得剛走進(jìn)校園是對什么都好奇,充滿朝氣的大一...
    向小萍閱讀 475評論 10 4
  • 哈尼蹲在床尾,背對著我認(rèn)認(rèn)真真地舔爪子。 我湊近她說:尼尼,我想親親你。 哈尼停下舔爪子的動作,扭頭看了看我,然后...
    長長貓小窩閱讀 350評論 0 0

友情鏈接更多精彩內(nèi)容