天天看點

python 實體位址_IP位址定位真實實體位址-py2.7,Python交流,技術交流區,魚C論壇 - Powered by Discuz!...

#!/bin/usr/env python

#-*- coding:utf-8 -*-

'''百度地圖API-高精度IP定位'''

import urllib2,json,threading

from Tkinter import *

code={161:'定位成功',167:'定位失敗',1:'伺服器内部錯誤',101:'AK參數不存在',200:'應用不存在,AK有誤請檢查重試',201:'應用被使用者自己禁止',202:'應用被管理者删除',203:'應用類型錯誤',210:'應用IP校驗失敗',211:'應用SN校驗失敗',220:'應用Refer檢驗失敗',240:'應用服務被禁用',251:'使用者被自己删除',252:'使用者被管理者删除',260:'服務不存在',261:'服務被禁用',301:'永久配額超限,禁止通路',302:'當天配額超限,禁止通路',401:'目前并發超限,限制通路',402:'目前并發和總并發超限',999:'網絡連接配接錯誤---[内網或無網絡連接配接]'}

def GetAddress(ip,ak='oTq3kbSY0uwjt1zm0AepBr7FqYTx4Lcb'):

try:

res=urllib2.urlopen('http://api.map.baidu.com/highacciploc/v1?qcip=%s&qterm=pc&extensions=3&ak=%s&coord=bd09ll' % (ip,ak),timeout=2)

resjson=json.loads(res.read())

res.close()

return resjson

except Exception,e:

return 999

def main():

text.delete(0.0,END)

qip=ip.get()

if qip is None:

pass

else:

connectJson=GetAddress(qip)

if connectJson != 999 and connectJson['result']['error'] == 161:

formatted_address=connectJson['content']['formatted_address']#位址

confidence=connectJson['content']['confidence']#精準度

if connectJson['content'].get('business'):

business=connectJson['content']['business']#商圈

else :

business=u'無'

result=connectJson['result']['loc_time']#定位時間

if connectJson['content'].get('location_description'):

location_description=connectJson['content']['location_description']#精确到

else :

location_description=u'無'

text.insert(END,u'\nIP位址: %s    精準度: %0d%%\n\n'%(qip,float(confidence)*100))

text.insert(END,u'所在位址: '+formatted_address+'\n\n')

text.insert(END,u'所在商圈: '+business+'\n\n')

text.insert(END,u'精确到: '+location_description+'\n\n')

text.insert(END,u'定位時間: ['+result+']')

codevar.set(code.get(connectJson['result']['error']))

elif connectJson==999:

codevar.set(code.get(connectJson))

else:

codevar.set(code.get(connectJson['result']['error']))

def SearchIP():

t=threading.Thread(target=main)

t.start()

if __name__ == '__main__':

root=Tk()

root.title(u'IP精準定位 ')

root.geometry("350x300")

root.resizable(False, False)

ip=StringVar()

codevar=StringVar()

lb=Label(root,text='待查詢的IP位址:')

ent=Entry(root,textvariable=ip,width=20)

btn=Button(root,text=u'  查 詢  ',command=SearchIP)

text=Text(root,width=50,height=18)

lb.grid(row=0,column=0,pady=5)

ent.grid(row=0,column=1,pady=5)

btn.grid(row=0,column=2,pady=5)

text.grid(row=1,columnspan=3)

codelb=Label(root,textvariable=codevar)

codelb.grid(row=2,columnspan=3)

codevar.set(u'準備就緒')

mainloop()