利用jieba對網易雲音樂的評論進行詞雲分析

2020-12-10 騰訊網

這是一篇代碼文章,因為所有的文字將會以類似注釋的方式進行敘述,文字是對代碼的補充說明和解讀。

這是一篇避坑文章,尤其對於新人來說,這些坑你一定會遇到,希望你不會犯下跟我一樣的問題,從另一個角度來講,你們是幸運的。

本文在pycharm裡運行,python 版本3.6,在windows 10系統中運行,望周知。

好了,話不多說,開始碼代碼。

import numpy as npimport timeimport jsonfrom pandas.io.json import json_normalizeimport requestsimport pandas as pdimport jiebafrom PIL import Imageimport wordcloud

上述我應該不需要多說,就是導入需要的模塊,貌似有點多,但是也說明這裡的坑比較多,接著往下走。

pd.set_option('display.max_columns',None)

第一次利用pandas讀取文件時,尤其是欄位多到30幾個,行數多於幾萬行,這時會出現如下的景象:

發現列跟行都被省略了,這時你怎麼辦?你可能回答:我就蹭蹭,我不進去,不好意思,因為文件太大,你沒有辦法打開物理文件。那麼這個時候,一行代碼就用上了:

pd.set_option('display.max_columns',None)

用以顯示所有列,相應的還有display.max_rows 顯示所有行。

當你第一次見到該數據時,你需要對數據的記錄或者欄位進行一番簡單的了解,這個選項能讓你對數據有個初步概念。

當然了 pd.set_option裡有諸多的選項,在這裡不做深究,有興趣的可以課下公眾號搜索一下。

wangyimusic_comments = Nonefor i in range(100,1100,100): url = r'http://music.163.com/api/v1/resource/comments/R_SO_4_483671599?limit=100&offset={}'.format(str(i)) headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} response = requests.get(url,headers=headers)

1、這裡把網易雲評論的接口拿出來拓展一下

http://music.163.com/api/v1/resource/comments/R_SO_4_{111}?limit={222}&offset={333}

"111":這裡是指的歌曲的ID,如果你想下載任意一首歌曲的評論數據,你可以先去網易雲搜一下歌曲,對應的網址內就有這個歌曲ID。

"222":這裡是可以自己修改的,其實就是一頁顯示的評論條數,比如你可以是10,100,看你的心情,也得看後面的offset設置的簡單與否。

畢竟你要爬取多頁的數據,不能自己給自己找麻煩對吧。

"333":指的是從哪一條評論開始下一頁,比如100,意味著從第100條評論開始下一頁。如果你對資料庫的分頁limit比較熟悉,可能會更容易理解一些。

當然了,網易雲接口還有好多好玩兒的東西,具體請參照小五哥之前的微信公眾號文章《收藏這些API,獲取網易雲音樂數據超輕鬆》。

大家可以看看其他的網易雲音樂的接口介紹,很有意思,不過爬取的數量是有限制的,但是練練手總是足夠的。

2、關於requests庫

這是爬蟲的基本庫之一,用我們英語老師的話講:不要問原因,這是固定搭配,背下來即可。

requests.get(url,headers=headers)

主要是用來將網頁的原始碼給提取出來。

data = json.loads(response.text) comments = json_normalize(data['comments']) wangyimusic_comments=comments.append(wangyimusic_comments) print('抓取完第{}頁'.format(str(i//100))) time.sleep(np.random.randint(2, 7))

通過接口抓取數據我不知道有沒有速度的限制,但是我們在抓取正常網站數據時還是不要太過分。孔子曰:以和為貴,所以每次請求我就間隔了隨機的2~7秒的時間。

wangyimusic_comments.to_csv('hot_wangyimusict.csv',encoding='utf-8-sig',index=False)

關於json_normalize,這是我目前遇到的解析json為DataFrame格式最簡單的方式了(當然,也可能是我頭髮長見識短的原因)。

json_normalize(data['comments']) 直接將數據轉化為DataFrame格式了,這種方式我是一見鍾情。

畢竟簡潔是一種美,而且是一種大美。

關於寫入數據pd.to_csv 其實這裡沒有必要存入文件,因為我們可以直接保存在變量裡,直接在下面的語法中調用即可。

但是我想說的最重要的,幾乎每個人在爬取數據保存數據時都會遇到的報錯:

打開文件亂碼,這裡使用encoding='utf-8-sig',這樣就解決了寫入文件亂碼的異常,具體的原理為什麼encoding='utf-8'不行,而encoding='utf-8-sig'就可以了。

大家可以查閱CSDN文章《Python 讀取文件首行多了"\ufeff"字符串》,解釋的很通俗。我想說的次重要的,是index=False,如果不加這個參數,會導致DataFrame寫入文件帶有默認的index 1 2 3 ...

這個沒有意義的index,至少我是不想寫入文件保存下來的,因此直接去掉。

text = ''commts = wangyimusic_comments.contentfor commt in commts: text += ' '.join(jieba.lcut(commt))

曾經的jieba的安裝讓我頭疼,但是不知道為何,我直接在annaconda裡pip install jieba就直接成功了。

jieba.lcut是對每個評論進行分詞處理,通過join函數將分詞合成一個字符串。

background_image = np.array(Image.open(r'C:\Users\jiangms\Pictures\640.png'))

讀取圖片文件我一開始用的是,

import matplotlib.pyplot as pltplt.imread(img)

但是卻報了如下的錯:

UserWarning: mask image should be unsigned byte between 0 and 255

翻譯成人話:圖片可以展現,問題是沒有導入圖形的輪廓,而且出現了警告,意思是:掩碼圖像應為0到255之間的無符號字節,所以要將圖片轉為數組。

使用np.array(Image.open(img)),即可避免報錯信息,但是W H Y ??真的不了解 。

為什麼要用二值化圖片,原理並不清楚,之前學PS的時候也是在三原色,通道那兒糊塗著。

wc = wordcloud.WordCloud( font_path='C:/Windows/Fonts/SimHei.ttf', #設置字體,解決顯示口字型亂碼問題 mask=background_image, #圖片背景 # width=1200, #圖片寬度 # height=900, #圖片高度 max_words=1000, #最大詞數 max_font_size=150, # 最大字體大小 min_font_size=4, # 最小字體大小 scale=1.5 #)

需要說明的是如果參數mask存在的話,那麼高度和寬度參數將會失效,這個需要注意一下。

wc.generate(text)plt.imshow(wc)plt.show()#使用matplotlib進行顯示wc.to_file('wordcloud.jpg')#保存圖片

好了,文章到了這兒就結束了,有幾個注意點希望能給大家提醒,能給大家啟發。

相關焦點

  • 使用Jieba庫分分鐘實現高端大氣的詞雲
    實現思路利用python的jieba庫對文本進行分詞及詞頻統計,然後通過在線製作詞雲工具TAGUL,製作詞雲。下面以《鬥破蒼穹》小說為例,利用Jieba庫實現分詞。三十年河東,三十年河西,莫欺少年窮!(3)代碼實現如下:'''利用python的jieba庫以及在線製作詞雲工具TAGUL作者:青松日期:2020/02/23'''import jieba.analyse
  • 爬蟲,不再聯繫,網易雲10萬評論都在說啥
    By--下邪--最近小編迷上了夏天Alex,他的音樂總有一種讓人聽了想哭的感覺。於是將不再聯繫這首最好聽的音樂之一的所有評論下載下來,並做了相關的詞雲分析。%d"%self.row)self.f.save(u'夏天——不再聯繫——評論.xls')#通過每頁的評論的URL來獲取評論def get_comments(self,url):url=urlresponse
  • 競品分析 | QQ音樂 VS 網易雲音樂
    本文作者從產品的市場、發展歷程、運營數據、產品定位、目標用戶、盈利模式和產品功能等幾個方面分析其優缺點,對QQ音樂和網易雲音樂這兩款App進行分析,說一下自己的見解,試圖找出各自的不足,且提出了自己的建議。
  • 使用python生成詞雲
    今天和大家分享一下如何使用python生成詞雲,在製作詞雲之前,我們首先需要一個用於製作詞雲的數據和形狀的模板,本篇文章以長安十二時辰的txt文件和中國地圖為例。具體代碼如下:#打開文件txt=open(".
  • 網易雲音樂裡有哪些打動你的評論?
    摘取網易雲音樂23個風格分類下29922個歌單,遍歷了播放量大於100萬的歌單裡所有歌曲(80w+),經過去重得到141264首歌曲裡共計1131521條熱門評論。首先,根據點讚數對熱評進行排序,列出點讚數Top100的熱評。其次,通過詞雲、詞頻統計和文本情感分析等手段對網易雲音樂熱評進行內容分析。
  • 網易雲音樂分析報告 | 差異化,產品的持續生命力
    前面我們看到,網易雲音樂有相較其他總量排名前五的APP有更高的7日留存率和更高的卸載率。我們分析過,原因是網易雲音樂的版權問題。那麼,用戶粘度就能讓我們很清楚的看到所留存下來的用戶到底有多少是忠實粉。評論是網易雲音樂的一大特色,而翻閱評論基本上已經是網易雲音樂使用者的習慣。往往一些大眾喜歡的音樂(甚至隨著在網易雲的興起的小眾音樂),都有很豐富的評論。甚至有些時候忘掉一首歌的名字,都還記得評論,因而在評論中投放廣告更符合合作廠商和網易雲音樂的利益要求。其次,對於新的音樂人的扶植(如界面對新音樂人的廣告)也成網易雲音樂的收入之一。
  • 酷狗音樂、QQ音樂、網易雲音樂產品體驗&競品分析
    相比之下,網易雲音樂在2013年才以移動端為起點正式上線,但是網易雲以社交為突破點,至2015年7月,網雲音樂宣布其用戶數突破1億。2.競品分析使用設備:魅族MX4   Andriod 4.4.2    Flyme OS 4.2.8.2C競品版本:酷狗音樂 8.3.5qq音樂 6.6.0.8網易雲音樂 3.7.4戰略層1.
  • 拿來就用能的Python詞雲圖代碼|wordcloud生成詞雲詳解
    詞雲也叫文字雲,是一種可視化的結果呈現,常用在爬蟲數據分析中,原理就是統計文本中高頻出現的詞,過濾掉某些幹擾詞,將結果生成一張圖片,直觀的獲取數據的重點信息。今天,我們就來學習一下Python生成詞雲的常用庫「wordcloud」。
  • 給閱讀充分的想像空間和娛樂趣味 | python詞雲
    1.python詞雲模塊的安裝製作詞雲的主要模塊為 「wordcloud」,另外,要使用 「jieba」 庫切割中文句子,用 「imageio」 讀入圖片。在命令行中執行以下命令即可安裝:pip install wordcloud jieba imageio製作你的第一個詞雲下面用四行代碼製作了一個詞雲,代碼中包含了詳細的注釋:# example1.py# 從詞雲模塊 wordcloud
  • 網易雲音樂精選評論大全 網易音樂經典最火深情感動神評論
    — 網易雲音樂@--__--  評論Doughnuts Hole《おとなの_》  二  我想做一個能在你的葬禮上描述你一生的人。  — 網易雲音樂@醋溜6  評論梶浦由記《Palpitation!》
  • 分析完110萬+條網易雲評論,我找到了在線寫詩的精髓
    摘要:本文爬取[1]了網易音樂23個風格分類[2]下29922個歌單,遍歷了播放量大於100萬的歌單裡所有歌曲(80w+),經過去重得到141264首歌曲裡共計1131521條熱門評論。首先,根據點讚數對熱評進行排序,列出點讚數Top100的熱評。
  • 產品分析與改進建議:網易雲音樂,音樂的力量
    本文篇幅較長,從市場與行業、產品背景與定位、產品功能、運營、商業模式和發展方向這幾個方面對網易雲音樂進行了較全面的整理和分析,並基於「優先服務中高端用戶,保證優質內容和良好的社區氛圍,以此形成對大眾用戶的自然吸引」這一原則,重點對雲音樂的興奮型功能和反向型功能、商業模式進行分析和提出改進建議。
  • 音樂的力量 | 最新版網易雲音樂APP產品分析報告
    本文對最新版網易雲音樂APP從產品概述、競品分析、用戶群體、產品功能等幾個方面進行分析總結,並給出相關優化方案。表2.4 網易雲音樂優劣勢分析如上表2.4所列,簡單分析總結了網易雲音樂的優勢和劣勢:網易雲音樂主打音樂+社交,在扶持獨立音樂人獲得大量原創音樂的同時,不斷改進雲村社區,引導用戶創作,產出高質UGC
  • 產品分析報告 | 網易雲音樂,差異化路線打造高質量音樂社區
    一方面製作歌單可以對自己的歌曲整理分類,在網易雲進行歌單雲儲存,另一方面,自己的歌單被他人收藏、評論,會激發用戶後續更新、創建歌單的動力,形成了一個良好的閉環,奠定了網易雲音樂最早的UGC社交屬性。4.3 個性推薦
  • 產品分析 | 網易雲音樂,音樂產品的視覺化探索之路
    編輯導讀:網易雲音樂作為當下在年輕人群體中大火的音樂類APP必有其獨到之處,本文作者主要從產品框架、競品分析、用戶分析和功能分析幾個方面對網易雲音樂的視覺化探索之路進行了產品分析,與大家分享。
  • 那些讓人拍案叫絕的網易雲音樂神評論
    — 網易雲音樂@--__--評論Doughnuts Hole《おとなの_》二我想做一個能在你的葬禮上描述你一生的人。— 網易雲音樂@醋溜6評論梶浦由記《Palpitation!》— 網易雲音樂@50號公路評論趙雷《理想》十一世界如此廣闊,人類卻走進了悲傷的牆角— 網易雲音樂@嗷嗷的嗷嗷虎評論宋冬野《斑馬,斑馬》
  • COVID-19數據分析實戰:WordCloud 詞雲分析
    前言上一篇文章(連結)我們對COVID19_line_list數據集進行了清洗以及初步分析。本文中我們將分析如何用詞雲來展示文本信息的概要。比如我們從詞雲百度百科截取文字,製作詞雲。簡單來說,詞雲就是重要單詞的可視化,如下圖。
  • 網易雲音樂、酷狗音樂、QQ音樂:移動音樂APP競品分析
    根據自身長期使用過的產品,甄選「後起新秀」網易雲音樂、「傳統霸主」酷狗音樂和QQ音樂作詳細競品分析。三. 詳細競品分析3.1 使用需求分析3.1.1 用戶音樂需求及使用場景分析主播電臺方面類似於音樂FM產品,像傳統電臺主播們的各類節目少了插播的廣告多了更單純的體驗,同時用戶也可以開通主播電臺表現自己分享內容。個性推薦會在第一次使用引導用戶做簡單喜好分析,同時與用戶播放及收藏記錄進行個性化推薦。個人體驗三款產品推薦的內容風格,網易雲推薦的內容是最貼合自身聽歌習慣的。
  • 一種用Python生成詞雲
    一種用Python生成詞雲我們在閱讀一篇很長的文章時,總先看看文章的關鍵詞來獲知文章的大概內容。今天我們就來製作一個詞雲程序,將文章中出現次數較多的詞語提取出來,生成一張詞雲圖。首先需要安裝好了python的運行環境,並且以pycharm作為默認工具,安裝所需的第三方庫,它們分別是jieba 和wordcloud.安裝可以參考:https://www.jb51.net/article/141320.htm然後開始製作詞雲程序。
  • 中文詞雲的繪製
    英文文本中單詞間用空格進行分隔,所以英文文本的詞雲製作比較簡單,將讀取文本文件對象作為參數傳遞給WordCloud()的generate()函數就可以了,默認詞雲的背景為黑色,下面例子將背景色設為白色。