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
結果
変数に格納されている情報
どの変数にどの情報が保存されているのかを下表に示す。(上記サンプルコードのようにデータベースを読み込んだ場合)
書いてある情報は前のエントリーと同じ。
変数 | 情報 |
---|---|
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']);
日本語データベースを利用した時の結果は以下のようになる。