2013-11-04 44 views
1

位置我使用这个Python代码来获取用户的IP地址:使用IP地址来查找在Python

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而不用他们做任何事情,然后显示位置。

谢谢。

回答

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(就像你在你的问题中)或{}。对于它的价值,最后一种选择现在被认为是“最好的方式”。

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

+0

+1适用于所有的方式! –

+0

谢谢!完美答案 –

+0

@ kindall,我正在得到未知的国家和未知的城市,该怎么办......? – Mulagala

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/ 希望这可以帮助你!