本篇內(nèi)容主要講解“怎么用python實現(xiàn)粉絲地域分布熱力圖”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“怎么用python實現(xiàn)粉絲地域分布熱力圖”吧!
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、寶安ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的寶安網(wǎng)站制作公司
我們第一步需要在網(wǎng)易云音樂網(wǎng)頁找到歌手的粉絲頁面:
通過這個網(wǎng)頁,我們可以獲取歌手的id
比如這里許嵩的id是31265745,我們只需要把代碼中歌手id替換成許嵩的id即可:
# 歌手idaid = '31265745'
運行代碼后,我們可以獲取粉絲的信息:
經(jīng)過一天一夜的爬蟲,獲得了四萬多個粉絲信息。
一共三個屬性信息,包括昵稱(nickname),位置(location),以及性別(gender)。我們只關(guān)注位置信息。
值得注意的是,Python3的編碼方式和Python2并不一樣,所以在原代碼的95行,97行,我們需要做一些改動:
cipher = AES.new(key.encode('utf-8'), AES.MODE_CBC, iv.encode('utf-8'))# 加密后得到的是bytes類型的數(shù)據(jù)encryptedbytes = cipher.encrypt(msg.encode('utf-8'))
在粉絲信息提取的信息中,位置信息為城市編碼。
我們分三步走:
我們先將城市編碼轉(zhuǎn)換成中文的位置信息
然后通過百度API將中文位置轉(zhuǎn)換成經(jīng)緯度
根據(jù)每個地區(qū)的人數(shù)在地圖經(jīng)緯度上標注熱力點
在第2步中,我們需要申請百度地圖的服務(wù)密鑰。
我的申請信息如下:
將申請到的ak填入到原代碼的第75行即可。
還有一處代碼需要進行改動,因為你如果在獲得ak后跑程序,會發(fā)生報錯:
{"status":240,"message":"APP 服務(wù)被禁用"}
由于服務(wù)升級,更新之后請求的URL體發(fā)生了改變:
# 舊: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改過來,發(fā)現(xiàn)還是會報錯。
經(jīng)過我的仔細思考,發(fā)現(xiàn)新的版本將的是如果逆地理編碼,而我們需要的是“正”地理編碼,于是我嘗試將reverse_geocoding中的reverse去掉,沒想到竟然通過了!真是機智。
這部分代碼為(在原代碼72行開始):
url = "http://api.map.baidu.com/geocoding/v3/"output = 'json'# 密鑰需要到百度開發(fā)者平臺申請ak = 'bwLDdZXZNcrGCLVdsRPVESQv1GjtwOW8'addr = quote(address)uri = url + '?' + 'ak=' + ak + '&output=' + output + '&address=' + addr
最后是繪制地圖,經(jīng)過多次嘗試后,之前申請的百度地圖服務(wù)應(yīng)用類別不是服務(wù)器,于是我又申請一個瀏覽器端的ak:
在定位地區(qū)的時候,有一個一直報錯,就是“淮北市”,于是我將它在字典里面刪除了:
loc_counts.pop('淮北市')
好了,經(jīng)過一段時間和代碼死懟,終于獲得熱力圖:
可以看出來許嵩的粉絲主要集中在安徽江蘇上海等地,另外廣東北京地區(qū)也非常之多。
放大一下看:
到此,相信大家對“怎么用python實現(xiàn)粉絲地域分布熱力圖”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!