1

我正在使用这个 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,然后显示位置。

谢谢。

4

2 回答 2

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

其余的你似乎掌握得很好。

于 2013-11-04T22:47:01.760 回答
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/ 希望这可以帮助你!

于 2017-12-09T14:30:38.047 回答