怎么根据ip地址查到具体地方(ip地址能查到多精确)
根据ip地址,可以找到具体的地址;Ip地址是根据每台计算机的网络连接点获取的“身份证”。查询ip地址可以让我们有效地知道计算机的位置。
Ip地址是根据每台计算机的网络连接点获取的“身份证”。查询ip地址可以让我们有效地知道计算机的位置。
一种根据IP地址查询特定地理位置的方法
百度地图有一个API可以根据IP查询地址
http://lbsyun.baidu.com/index.php? title = web API/IP-API
1.根据百度地图API直接通过IP查找地址
根据API,请求以下两个地址可以根据IP获得具体地址:
请求参数如下:
如果我们的请求ip是192.168.1.1,请求地址结构如下:
http://api.map.baidu.com/location/ip? Ak = XXX(自己申请的API Token:实验语言采用Ip=192.168.1.1 Python,代码和注释如下:
来自urllib导入请求 导入json
# ak与ip绑定 Baidu _ API _ AK = zx9 qcmwzzitzro 5 ssd7 gngewd4 qduwr ip_addr = xxx.xxx.xxx.xxx #请求网址 URL = http://api.map.baidu.com/location/ip? AK =+百度_ API _ AK+& amp;ip= + ip_addr req =请求。请求(url) res = request.urlopen(req) res = res.read 字符串的字节数 n = res.decode(编码= & # 39;utf-8 & # 39;) # str到json s = json.loads(n) t = json.dumps(s,success _ ascii = False) 打印(n) Print(t)上面的代码大致意思是请求url读取返回的流,并将其转换为json格式。结果如下图所示:
注意在上图中,我们只能看到四川省成都市范围较大,查询时街道等字段为空。也就是说只能查询一个大概的范围。
PS:返回值也有经纬度,但是根据原始文档,这些经纬度是IP所在城市的中心点的经纬度。
2.先查经纬度,根据经纬度查地址。
按照IP的经纬度,百度地图不给API,但是墙外有资源。这里没贴。自己去找。。。
如果得到经纬度,可以通过经纬度+百度地图API查询详细地址。
百度地图的全球反向地址编码API如下:
http://lbsyun.baidu.com/index.php? title = web API/guide/web service-地理编码-国外
如下图所示,假设我们得到了经纬度。根据API上的规则,经纬度在位置参数后面。根据经纬度,我们可以找到详细的地址。
实验代码和注意事项如下:
#!/usr/bin/env python # coding=utf-8
来自urllib导入请求 导入json
# ak与ip绑定 Baidu _ API _ AK = zx9 qcmwzzitzro 5 ssd7 gngewd4 qduwr URL = http://api.map.baidu.com/geocoder/v2/?回调= renderReverse & amp位置=30.6667,104.0670&。输出= json & amppois = 1 & ampak= +百度_api_ak req =请求。请求(url) res = request.urlopen(req) res = res.read n = res.decode(编码= & # 39;utf-8 & # 39;) #结果格式为渲染反向& amp& amprenderReverse(json字符串)。所以.... n = n[len(RenderReverse & amp;& amprenderReverse) + 1:-1] st = json.loads(n) # st & # 39s结构 #结果:XXXX #现状:XXXX 结果= ST[结果] 对于结果中的I: 打印结果(I,结果[i])如下:
这里的地址很详细,但是没有详细分析,看起来有点乱。如果想得到指定的位置信息,可以参考API。
然而,通常情况下,这种调查的结果是不正确的。可能是因为运营商对用户保密,查出的地址可能是运营商服务器的地址,但具体细节还没有调查透彻。