说明:使用ip地址查询太麻烦,偶然搜索发现有人已经写过基于百度API的ip地址查询,这个是前人的结晶,我只是修改了一些,勿喷。
用的python2.7,编码问题真是坑。
百度mapAPI私钥申请:https://jingyan.baidu.com/article/e73e26c0b5b75124adb6a786.html
因为是浏览器访问,因此私钥申请写浏览器模式。
欢迎大家吐槽,有更好的可以分享学习。
# -*- coding:utf-8 -*-
# ip精确查找
import requests
import json
import sys
reload(sys)
sys.setdefaultencoding('utf8')
ip="目的IP"
AK="你的私钥"
def findip():
pois=""
url='https://api.map.baidu.com/location/ip?ip='+ip+'&ak='+AK+'&coor=bd09ll'
s=requests.get(url)
page_json=s.text
#page_json=page_json.decode("unicode_escape")
#print page_json
data_dic = json.loads(page_json)
if(data_dic.has_key("address")):
country=data_dic["address"]
print "该IP地址country为:" +country
else:
print "查询失败"
if(data_dic.has_key("content")):
content=data_dic["content"]
#print content
address_component=content["address"]
#print address_component
formatted_address=content["address_detail"]
point=content["point"]
city=formatted_address["city"]
district=formatted_address["district"]
street=formatted_address["street"]
street_number=formatted_address["street_number"]
x=point["x"]
y=point["y"]
print "该IP地址的具体位置为:" +address_component+district+street+street_number
print "该IP的所在城市为:"+city
print "该IP经纬度为:"+x+","+y
else:
print 'IP地址定位失败!!!'
findip()
|