我正在使用此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而没有做任何事情,然后显示位置。
感谢。
答案 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地址替换的令牌:%s
,xxx
(就像您在问题中所示)或{{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/ 希望这可以帮助你 !