平常查ip的归属地,都到ip138.com去查,想着自己用Flask写一个,支持同时获取多个ip的归属地。如下截图
Flask后端实现如下,前端把数组转为json发给后台,后台以json返回前端转为数组。Flask安装了个pyqqwry,pyqqwry提供简便的方法把ip的归属地查出来,可以使用pip install pyqqwry进行安装:
#查找ip归属地
from pyqqwry.qqwry import QQWry
@app.route('/ip/gsd')
def ip_gsd():
mywant = []
ip = request.values.get("ip")
if ip:
ips = json.loads(ip)
qq_wry = QQWry('/usr/local/src/flask/QQWry.dat')
for ip_one in ips:
rst = qq_wry.query(ip_one)
result = " ".join(rst)
if result:
json_result = {}
json_result['ip'] = ip_one
json_result['result'] = result
mywant.append(json_result)
#app.logger.debug(mywant)
return json.dumps(mywant)
else:
return 'not find ip'
前端代码如下,获取文本转为数组,再转为json传给后端:
<script type="text/javascript">
$(document).ready(function(){
$("#button_ipgsd").click(function(){
mywant = ''
ipgsd = $("#text_ipgsd").val();
ips = ipgsd.trim().split('\n');
ips_json = JSON.stringify(ips);
$.get("/ip/gsd?ip="+ips_json,function(data,status){
result = JSON.parse(data);
for(i = 0 ; i < result.length; i++){
mywant = mywant + result[i]['ip']+','+result[i]['result']+'\n'
}
$("#ipgsd_result").html(mywant);
});
});
});
</script>
最后附上本人的网络课堂地址,如有兴趣请点击: 实践哥