您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么用python實現粉絲地域分布熱力圖”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用python實現粉絲地域分布熱力圖”吧!
我們第一步需要在網易云音樂網頁找到歌手的粉絲頁面:
通過這個網頁,我們可以獲取歌手的id
比如這里許嵩的id是31265745,我們只需要把代碼中歌手id替換成許嵩的id即可:
# 歌手idaid = '31265745'
運行代碼后,我們可以獲取粉絲的信息:
經過一天一夜的爬蟲,獲得了四萬多個粉絲信息。
一共三個屬性信息,包括昵稱(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'))
在粉絲信息提取的信息中,位置信息為城市編碼。
我們分三步走:
我們先將城市編碼轉換成中文的位置信息
然后通過百度API將中文位置轉換成經緯度
根據每個地區的人數在地圖經緯度上標注熱力點
在第2步中,我們需要申請百度地圖的服務密鑰。
我的申請信息如下:
將申請到的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:
在定位地區的時候,有一個一直報錯,就是“淮北市”,于是我將它在字典里面刪除了:
loc_counts.pop('淮北市')
好了,經過一段時間和代碼死懟,終于獲得熱力圖:
可以看出來許嵩的粉絲主要集中在安徽江蘇上海等地,另外廣東北京地區也非常之多。
放大一下看:
到此,相信大家對“怎么用python實現粉絲地域分布熱力圖”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。