使用IP地址在python中查找位置

时间:2013-11-04 22:39:06

标签: python sockets geolocation ip

我正在使用此python代码获取用户的ip地址:

import socket
print socket.gethostbyname(socket.gethostname())

并使用它来查找他们的位置:

import socket
print socket.gethostbyname(socket.gethostname())
import urllib
response = urllib.urlopen('http://api.hostip.info/get_html.php?   ip=xxx&position=true').read()
print(response)

有人可以帮我找到获取ip的方法,然后将其放入代码的第二部分。 程序应该找不到用户ip而没有做任何事情,然后显示位置。

感谢。

2 个答案:

答案 0 :(得分:6)

在Python中有几种方法可以进行这种字符串操作:

ip = socket.gethostbyname(socket.gethostname())

url = "http://api.hostip.info/get_html.php?ip=" + ip + "&position=true"
url = "http://api.hostip.info/get_html.php?ip=%s&position=true" % ip
url = "http://api.hostip.info/get_html.php?ip=xxx&position=true".replace("xxx", ip)
url = "http://api.hostip.info/get_html.php?ip={}&position=true".format(ip)

选择一个......最后三个主要取决于将由IP地址替换的令牌:%sxxx(就像您在问题中所示)或{{1 }}。对于它的价值,最后一个选项被认为是“现在最好的方式”。

其余的你似乎有一个很好的处理。

答案 1 :(得分:0)

我建议查看Geoip库。 它有一个非常简单的模块geolite2。 例如:

from geoip import geolite2

match = geolite2.lookup('10.10.10.10')
print('Country: '+match.country)
print('timezone: '+match.timezone)
...

如果你想在没有用户输入的情况下查找主机ip,你可以使用它们的功能! 这里有很好的记录http://pythonhosted.org/python-geoip/ 希望这可以帮助你 !