Maison >Problème commun >L'adresse spécifique peut-elle être trouvée sur la base de l'adresse IP ?
L'adresse spécifique peut être trouvée en fonction de l'adresse IP ; l'adresse IP est une "carte d'identité" obtenue en fonction du point de connexion réseau de chaque ordinateur. L'interrogation de l'adresse IP nous permet de savoir efficacement où se trouve l'ordinateur. est. .
L'adresse IP est une "carte d'identité" obtenue en fonction du point de connexion réseau de chaque ordinateur. L'interrogation de l'adresse IP peut effectivement nous permettre de savoir où se trouve l'ordinateur. est.
Comment interroger un emplacement géographique spécifique en fonction de l'adresse IP
Baidu Map dispose d'une API pour interroger des adresses en fonction de l'IP
http://lbsyun.baidu.com/index.php?title=webapi/ip-api
1. Vérifiez directement l'adresse IP selon l'API Baidu Map.
L'API indique que la demande des deux adresses suivantes peut obtenir l'adresse spécifique en fonction de l'IP :
Les paramètres de la demande sont les suivants :
Si l'adresse IP de notre requête est 192.168.1.1, alors l'adresse de la requête est construite comme suit :
http://api.map.baidu.com/location/ip?ak=XXX(自己申请的API TOKEN)&ip=192.168.1.1
Python est utilisé comme langage expérimental ici, et le code et les commentaires sont les suivants :
from urllib import request import json # ak is bound with ip baidu_api_ak = "ZX9QCmwzzItzRO5ssD7GNgEwD4OQduWR" ip_addr = "xxx.xxx.xxx.xxx" # Request url url = "http://api.map.baidu.com/location/ip?ak=" + baidu_api_ak + "&ip=" + ip_addr req = request.Request(url) res = request.urlopen(req) res = res.read() # Bytes to str n = res.decode(encoding='utf-8') # str to json s = json.loads(n) t = json.dumps(s, ensure_ascii=False) print(n) print(t)
Le code ci-dessus La signification générale est que l'URL de la requête lit le flux renvoyé et le convertit au format json. Le résultat est comme indiqué dans la figure ci-dessous :
2. Vérifiez d'abord la longitude et la latitude, puis vérifiez l'adresse en fonction de la longitude et de la latitude.
Basé sur la requête de latitude et de longitude IP, Baidu Maps ne fournit pas d'API, mais il existe toujours des ressources hors du mur. Ce n'est pas posté ici, allez le chercher vous-même. . . Si vous obtenez la latitude et la longitude, vous pouvez interroger l'adresse détaillée via l'API latitude et longitude + Baidu Map. L'API globale de géocodage inversé de Baidu Map est la suivante : http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroadComme indiqué ci-dessous, supposons que nous avons obtenu la latitude et la longitude. Selon les règles de l'API, ce qui suit le paramètre de localisation est la latitude et la longitude. Selon la latitude et la longitude, on peut trouver l'adresse détaillée.
#! /usr/bin/env python # coding=utf-8 from urllib import request import json # ak is bound with ip baidu_api_ak = "ZX9QCmwzzItzRO5ssD7GNgEwD4OQduWR" url = "http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=30.6667,104.0670&output=json&pois=1&ak=" + baidu_api_ak req = request.Request(url) res = request.urlopen(req) res = res.read() n = res.decode(encoding='utf-8') # The result format is renderReverse&&renderReverse(json str). so.... n = n[len("renderReverse&&renderReverse") + 1:-1] st = json.loads(n) # st's structure # result: XXXX # status: XXXX result = st["result"] for i in result: print(i, result[i])Les résultats sont les suivants :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!