【问题标题】:Using IP address to find location in python使用IP地址在python中查找位置
【发布时间】:2013-11-15 17:11:48
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: python sockets geolocation ip


    【解决方案1】:

    有几种方法可以在 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(就像您在问题中提到的那样)或{}。就其价值而言,最后一个选项如今被认为是“最好的方式”。

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

    【讨论】:

    • 谢谢!完美答案
    • @kindall,我得到了未知的国家和未知的城市,该怎么办...?
    【解决方案2】:

    我建议查看 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/ 希望这可以帮助你 !

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-05
      • 2022-11-05
      • 2011-10-26
      • 1970-01-01
      • 2014-07-31
      • 2010-09-15
      相关资源
      最近更新 更多