温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用python实现粉丝地域分布热力图

发布时间:2021-12-27 13:34:55 来源:亿速云 阅读:190 作者:iii 栏目:大数据

本篇内容主要讲解“怎么用python实现粉丝地域分布热力图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用python实现粉丝地域分布热力图”吧! 

获取粉丝信息        

我们第一步需要在网易云音乐网页找到歌手的粉丝页面:


怎么用python实现粉丝地域分布热力图

通过这个网页,我们可以获取歌手的id


比如这里许嵩的id是31265745,我们只需要把代码中歌手id替换成许嵩的id即可:


# 歌手idaid = '31265745'
 


运行代码后,我们可以获取粉丝的信息:


怎么用python实现粉丝地域分布热力图


经过一天一夜的爬虫,获得了四万多个粉丝信息。


一共三个属性信息,包括昵称(nickname),位置(location),以及性别(gender)。我们只关注位置信息。


值得注意的是,Python3的编码方式和Python2并不一样,所以在原代码的95行,97行,我们需要做一些改动:


cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))# 加密后得到的是bytes类型的数据encryptedbytes = cipher.encrypt(msg.encode('utf-8'))
 



制作地域热力图      


在粉丝信息提取的信息中,位置信息为城市编码。


我们分三步走:


  1. 我们先将城市编码转换成中文的位置信息

  2. 然后通过百度API将中文位置转换成经纬度

  3. 根据每个地区的人数在地图经纬度上标注热力点


在第2步中,我们需要申请百度地图的服务密钥。




我的申请信息如下:


怎么用python实现粉丝地域分布热力图


将申请到的ak填入到原代码的第75行即可。


还有一处代码需要进行改动,因为你如果在获得ak后跑程序,会发生报错:


{"status":240,"message":"APP 服务被禁用"}
 


由于服务升级,更新之后请求的URL体发生了改变:


# 旧:http://api.map.baidu.com/geocoder/v2/?location=34.35555,107.32518&output=json&ak=你的AK&pois=1# 新:http://api.map.baidu.com/reverse_geocoding/v3/?ak=你的AK&output=json&coordtype=wgs84ll&location=31.225696,121.49884
 


从这段代码看,是版本从v2升级成了v3。如果你将代码按照v3改过来,发现还是会报错。


经过我的仔细思考,发现新的版本将的是如果逆地理编码,而我们需要的是“正”地理编码,于是我尝试将reverse_geocoding中的reverse去掉,没想到竟然通过了!真是机智。


这部分代码为(在原代码72行开始):


url = "http://api.map.baidu.com/geocoding/v3/"output = 'json'# 密钥需要到百度开发者平台申请ak = 'bwLDdZXZNcrGCLVdsRPVESQv1GjtwOW8'addr = quote(address)uri = url + '?' + 'ak=' + ak  + '&output=' + output + '&address=' + addr
 


最后是绘制地图,经过多次尝试后,之前申请的百度地图服务应用类别不是服务器,于是我又申请一个浏览器端的ak:


怎么用python实现粉丝地域分布热力图


在定位地区的时候,有一个一直报错,就是“淮北市”,于是我将它在字典里面删除了:


loc_counts.pop('淮北市')
 


最终效果图      


好了,经过一段时间和代码死怼,终于获得热力图:



怎么用python实现粉丝地域分布热力图


可以看出来许嵩的粉丝主要集中在安徽江苏上海等地,另外广东北京地区也非常之多。

放大一下看:

怎么用python实现粉丝地域分布热力图

到此,相信大家对“怎么用python实现粉丝地域分布热力图”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI