Tahoo!!

自分の勉強していること(コンピュータ関連 / ネットワーク / セキュリティ / サーバ)や趣味について書いていきます

GeoIP2を使ってIPアドレスの情報を取得 (Python編)

前のエントリーでは、PHPでGeoIPを使ってIPアドレスを解析した。

本エントリーでは、Pythonを使ったやり方をメモ。と、言ってもほぼPHPと同じw

データベースのダウンロード

上記のエントリーと同様なので、上記のエントリーを参照のこと。

インストール

インストールにはpipを使う。pipのインストールに関しては、pythonを使っている場合大抵インストールされていると思われるので省略する。 PHPと同様にGithubの公式ページが参考になる。

GeoIP2 Python APIのインストール

$ pip install geoip2

これでインストールは完了。

使ってみる

以下のサイトを参考に、PythonでもIPアドレスから地域の情報を取得してみる。

サンプルコード

import geoip2.database

# データベースの読み込み
reader = geoip2.database.Reader('/usr/local/share/Geoip/GeoLite2-City.mmdb')

ip_addr = '157.7.205.139'
record = reader.city(ip_addr)

print "IP Address: ", ip_addr
print "Country:", record.country.name
print "Subdivision: ", record.subdivisions.most_specific.name
print "City: ", record.city.name
print "Latitude: ", record.location.latitude
print "Longitude: ", record.location.longitude

結果

f:id:takahoyo:20150120000334p:plain

変数に格納されている情報

どの変数にどの情報が保存されているのかを下表に示す。(上記サンプルコードのようにデータベースを読み込んだ場合)
書いてある情報は前のエントリーと同じ。

変数 情報
record.continent.name 大陸名
record.continent.code 大陸コード
record.country.name 国名
record.country.iso_code 国名コード
record.subdivisions.most_specific.name 州・県
record.subdivisions.most_specific.iso_code 州・県コード
record.city.name 都市名
record.location.latitude 都市の緯度
record.location.longitude 都市の経度
record.location.time_zone 都市のタイムゾーン

日本語データベース

データベースを読み込む時に、Readerの第2引数に以下のようにする。

$reader = new Reader('/usr/local/share/GeoIP/GeoLite2-City.mmdb' ,['ja']);

日本語データベースを利用した時の結果は以下のようになる。

f:id:takahoyo:20150120114600p:plain