Python:自动获取用户的国家/地区?

时间:2012-11-27 17:42:42

标签: python geolocation

使用某些API可能有一种简单的方法可以做到这一点,但网络编程并不是我的强项。 如何在Python中找出用户的国家?我需要使用与操作系统无关的解决方案,而我更愿意只使用标准库。我可以用IP地址做些什么吗?

3 个答案:

答案 0 :(得分:1)

你可以使用geo-ip for Python: http://code.google.com/p/python-geoip/ 它的默认免费数据库足以让用户的国家具有良好的准确性。

答案 1 :(得分:0)

Joran Beasely给出了一个很好的答案here,但由于它是以评论而非答复的形式出现,我无法将其标记为我接受的答案。不过,谢谢你的帮助!

答案 2 :(得分:0)

如果您知道用户的公共IP,则可以使用freegeip来完成此操作。下面是获取位置和时区的Python 3.4.2代码。

>>> import requests
>>> ip = '141.70.111.66'
>>> url = 'http://freegeoip.net/json/'+ip
>>> r = requests.get(url)
>>> js = r.json()
>>> js['country_code']
'DE'
>>> js['country_name']
'Germany'
>>> js['time_zone']
'Europe/Berlin'
>>> js['city']
'Stuttgart'
>>> js.items()
dict_items([('latitude', 48.7667), ('ip', '141.70.111.66'), ('region_code', 'BW'), ('country_code', 'DE'), ('city', 'Stuttgart'), ('zip_code', '70173'), ('country_name', 'Germany'), ('longitude', 9.1833), ('region_name', 'Baden-Württemberg Region'), ('time_zone', 'Europe/Berlin'), ('metro_code', 0)])