GeoIP

Maxmind dostarcza bibiliotekę GeoIP do geolokalizacji adresów IP dla wielu języków, w tym dla Pythona. GeoIP-Python to nakładka na bibliotekę napisaną w C - GeoIP. By zainstalować moduł Pythona musimy najpierw zainstalować/skompilować bibliotekę dla C, a dopiero po tym można skompilować moduł dla Pythona (dla Linuksa sprawdź swoje repozytoria). By móc geolokalizować adresy IP potrzebować będziemy także 25MB bazę - GeoLiteCity.dat dostępną z poziomu naszego skryptu.

Wykorzystanie GeoIP jest proste, oto skrypt

# -*- coding: utf-8 -*-
import GeoIP

# geolokalizacja adresu IP
gi = GeoIP.open('GeoLiteCity.dat', GeoIP.GEOIP_STANDARD)
geo = gi.record_by_addr('ADRES IP')
print geo
#miasto generalnie wymagać może zdekodowania:
#city = unicode(geo['city'], 'iso-8859-1')
A efekt np. taki:
{'city': 'Warsaw', 'region_name': 'Warszawa', 'region': '67', 'area_code': 0, 'time_zone': 'Europe/Warsaw', 'longitude': 21.0, 'metro_code': 0, 'country_code3': 'POL', 'latitude': 52.25, 'postal_code': None, 'dma_code': 0, 'country_code': 'PL', 'country_name': 'Poland'}
Gdzie numerację regionów znajdziemy na stronie maxmind, dla Polski:
PL,23,"Biala Podlaska"
PL,24,"Bialystok"
PL,25,"Bielsko"
PL,26,"Bydgoszcz"
PL,27,"Chelm"
PL,28,"Ciechanow"
PL,29,"Czestochowa"
PL,30,"Elblag"
PL,31,"Gdansk"
PL,32,"Gorzow"
PL,33,"Jelenia Gora"
PL,34,"Kalisz"
PL,35,"Katowice"
PL,36,"Kielce"
PL,37,"Konin"
PL,38,"Koszalin"
PL,39,"Krakow"
PL,40,"Krosno"
PL,41,"Legnica"
PL,42,"Leszno"
PL,43,"Lodz"
PL,44,"Lomza"
PL,45,"Lublin"
PL,46,"Nowy Sacz"
PL,47,"Olsztyn"
PL,48,"Opole"
PL,49,"Ostroleka"
PL,50,"Pila"
PL,51,"Piotrkow"
PL,52,"Plock"
PL,53,"Poznan"
PL,54,"Przemysl"
PL,55,"Radom"
PL,56,"Rzeszow"
PL,57,"Siedlce"
PL,58,"Sieradz"
PL,59,"Skierniewice"
PL,60,"Slupsk"
PL,61,"Suwalki"
PL,62,"Szczecin"
PL,63,"Tarnobrzeg"
PL,64,"Tarnow"
PL,65,"Torun"
PL,66,"Walbrzych"
PL,67,"Warszawa"
PL,68,"Wloclawek"
PL,69,"Wroclaw"
PL,70,"Zamosc"
PL,71,"Zielona Gora"
PL,72,"Dolnoslaskie"
PL,73,"Kujawsko-Pomorskie"
PL,74,"Lodzkie"
PL,75,"Lubelskie"
PL,76,"Lubuskie"
PL,77,"Malopolskie"
PL,78,"Mazowieckie"
PL,79,"Opolskie"
PL,80,"Podkarpackie"
PL,81,"Podlaskie"
PL,82,"Pomorskie"
PL,83,"Slaskie"
PL,84,"Swietokrzyskie"
PL,85,"Warminsko-Mazurskie"
PL,86,"Wielkopolskie"
PL,87,"Zachodniopomorskie"

RkBlog

Programowanie Sieciowe, 25 July 2009

Comment article
Comment article RkBlog main page Search RSS Contact