网站访问来源热力图呈现的简单数据可视化

本网站用的阿里云ECS,推荐大家用。自己搞个学习研究也不错
本文作者: 伯乐在线路易十四 。未经作者许可,禁止转载!
欢迎加入伯乐在线 专栏作者

个人博客运营了一年,收集到陆陆续续的访问者总数约12w个ip地址。突然手痒,想知道都是哪些地方来的访问者,就用百度api和一些python的简单处理,小半天完成了一简单数据可视化练手项目。

源代码在 github中: https://github.com/luyishisi/IP_location_wordpress

本文讲述从wordpress中记录访问者的ip,从数据库中取出后使用python调用百度api完成ip转换经纬信息。再通过热力图呈现出来。

0.目录

  • ip采集插件SlimStat
  • 数据库导出json
  • ip转化经纬
  • 百度IP定位api_字典解析
  • 生成输出json信息
  • 调用百度地图api呈现热力图

1.ip采集插件:SlimStat

想要实践本项目需要大量ip信息,则使用wordpress插件SlimStat进行ip信息采集.请在插件项目中安装并且使用上一天有一定数据后再继续项目

QQ截图20160626200744

QQ截图20160626185216

2.数据库导出json

此部分会sql语句的可以直接进入mysql导出,也可以使用phpmyadmin作为可视化导出

进入phpmyadmin后台,选择博客的的数据库

.QQ截图20160626201043

在这个表中,有所有访问的ip记录,进入后

修改上方的sql语句为:SELECT ip FROM  wp_slim_stats

执行之后页面就将只检索出ip的信息,然后下方有导出按钮,点击后选择自定义为json格式,导出得到:

QQ截图20160626201628

QQ截图20160626201525

保存为文件名  ip_add_all.json

3.ip转化经纬

4.百度IP定位api_字典解析

5.生成输出json信息

以下代码解决上面三个问题(不知道为什么代码没有显示出来,我用截图吧)

2016-08-29 18-02-55屏幕截图

Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import urllib2
import time
IpList = open(“ip_add_all.json”,“r”).read()
Ip = eval(IpList)
flag = 0
file = open(‘point.json’,‘w’)
for i in range(20):#这里的数字要估算你的有多少数据
    ip = Ip[i][‘ip’]
    res = urllib2.urlopen(“http://api.map.baidu.com/location/ip?ak=KrmZxHHwvLnl4Xfyt0FMMVzgGLaaxU2j&ip=”+ip+“&coor=bd09ll”)
    #这部分里ak的值最好换成你的,如果零时用可以先用我的
    a = res.read()
    zidian = eval(a)
    flag += 1
    if(zidian[‘status’] == 0):
        print flag,ip
        lng =  zidian[‘content’][‘point’][‘x’]
        lat =  zidian[‘content’][‘point’][‘y’]
        #print lat,lng
        str_temp = ‘{“lat”: ‘+lat+‘, “lng”:’+lng+‘},n’
        file.write(str_temp)    
file.close()

这部分使用百度的api.如果想自己使用的话则需要申请一个帐号和应用,他会给你一个ak密钥,加入到下面的代码中就可以自动完成ip–>经纬了

http://lbsyun.baidu.com/apiconsole/key  这里可以找到百度api的信息,在开放平台里.

python的代码则很简单

转化之后得到的是:

QQ截图20160626203117

完成转化

 

调用百度地图api呈现热力图

经过前面两轮的操作,已经从数据库得到ip_json,并且,使用百度ip定位api将ip转化为经纬度坐标,也写成json文件,现在的代码则是需要调用百度地图api中的热力图呈现.

http://developer.baidu.com/map/jsdemo.htm#c1_15

这部分api可以在这里找到

观察发现:

修改里面的point数组,则可以将之前采集的点呈现上去,

好吧,这里开始偷工减料了,之需要将之前json复制到这个point里面,并且保持格式一致,则点击运行就可以直接看到项目的结果啦..

你可以下载下面我做的这个all.html文件,然后点击在浏览器运行,就可以看到效果,不过这时候还是需要你手动把自己的加入进去.

all

最终热力图的样子如下:

QQ截图20160626193304QQ截图20160626193253

原创文章,转载请注明: 转载自URl-team

打赏支持我写出更多好文章,谢谢!
打赏作者

打赏支持我写出更多好文章,谢谢!


2

5 收藏

1 评论





关于作者:路易十四


少年程序猿,从事数据采集挖掘方面:个人博客,www.urlteam.org,邮箱:a83533774@gmail.com主要技能树:python,爬虫,linux,web前端,ACM,骑行。


个人主页 ·
我的文章

· 7 ·   

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

未经允许不得转载:演道网 » 网站访问来源热力图呈现的简单数据可视化

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册