我在日本和英国的网站上进行了测试,只是为了看看它是否准确到正确的国家,我得到的是与以下指南相同的结果.... LA America
我正在使用GeoIP和GeoLite。
所以我上网并按照这个快速使用指南: http://pythonhosted.org/python-geoip/ 然后我跳进我的终端并运行代码行......显示的示例返回一个基于洛杉矶的位置,因为指南显示...到目前为止一切都很好。
所以我退出终端并打开一个编辑器,看看我是否可以将其写入保存的.py文件中,如果需要,我可以使用一个命令运行(至少开始了)
我测试似乎无论我做什么它都会返回LA America ...我所做的只是将代码行写入编辑器并添加print语句以将信息返回给我...继承人代码:
from geoip import geolite2
# IP for google.co.uk
match = geolite2.lookup("216.58.198.163")
match is not None
print(match.country)
print(match.continent)
print(match.timezone)
print(match.subdivisions)
代码运行正常并至少返回信息,但无论哪个国家的IP地址进行测试我只会获得LA America(如指南所示)
这是我每次得到的东西:
US
NA
America/Los_Angeles
frozenset(['CA'])
>>>
有谁能告诉我为什么会这样,以及如何让它显示正确的位置?
注意:我获取IP的方法是打开我的BASH终端,然后输入:
$ host www.google.co.uk
google.co.uk has address 216.58.198.163
和
$ host www.google.co.jp
www.google.jp has address 209.85.202.94
答案 0 :(得分:0)
我找到了一个解决方案,我使用的指南没有提到GeoLite2和GeoIP需要使用最新的数据库文件(.mmdb)来为Python程序中的IP地址提供地理位置。
数据库可以免费下载,我还找到了一个显示它的用途的例子。我现在已经很好地编写了程序。提示用户输入有效的IP并返回相对准确的信息。
我现在甚至可以获取返回的经度和纬度值,并使用网站缩小搜索区域的范围。
感谢您的回复。我现在明白IP地址可以在URL上有不同的位置(例如www.something.co.uk地址可能不会返回英国的位置,尤其是Google这样的网站在全球拥有服务器/计算机)