當前位置:成語大全網 - 書法字典 - 如何用Python抓取網易雲音樂的熱門評論

如何用Python抓取網易雲音樂的熱門評論

本文分享的內容是如何用Python爬網易雲音樂的熱門評論,有壹定的參考價值,有需要的朋友可以參考壹下。

最近壹直在研究文本挖掘相關的內容。所謂巧婦難為無米之炊。要想分析文本,首先要獲取文本。獲取文本的方式有很多,比如從網上下載現成的文本文檔,或者通過第三方提供的API獲取數據。但是有時候我們想要的數據是無法直接獲取的,因為沒有直接的下載渠道或者API讓我們獲取數據。那麽這個時候我們該怎麽辦呢?通過網絡爬蟲獲取想要的數據還有壹個更好的方法,就是編寫計算機程序來偽裝成用戶。隨著計算機的高效率,我們可以方便快捷地獲得數據。

關於爬行動物

那麽怎麽寫爬蟲呢?可以寫爬蟲的語言有很多,比如Java,php,python等。個人比較喜歡python。因為python不僅有強大的內置網絡庫,還有很多優秀的第三方庫,別人直接做了輪子,我們拿著用就行了,這給寫爬蟲帶來了很大的便利。毫不誇張地說,妳實際上可以用不到10行python代碼編寫壹個小爬蟲,而用其他語言可以編寫很多代碼。簡單易懂是python的巨大優勢。

好了,事不宜遲,我們今天就進入正題。近年來,網易雲音樂開始流行。我自己就是網易雲音樂的用戶,用了好幾年了。以前用QQ音樂和酷狗。以我自己的親身經歷,我認為網易雲音樂最大的特點就是精準的歌曲推薦和獨特的用戶評論(鄭重聲明!!!這不是軟文,不是廣告!!!僅代表個人觀點,不喜勿噴!)。經常會有壹些神評論在壹首歌下面被贊很多。另外,網易雲音樂前幾天把精選用戶評論搬到了地鐵上,網易雲音樂的評論又火了。所以想分析壹下網易雲的評論,找出規律,特別是分析壹下壹些熱評的特點。抱著這個目標,我開始從網易雲抓取評論。

網絡圖書館

Python有兩個內置的網絡庫,urllib和urllib2,但是這兩個庫用起來都不是特別方便,所以這裏我們用壹個廣受好評的第三方庫,requests。使用請求,妳只需要幾行代碼就可以設置代理、模擬登錄和其他復雜的爬蟲工作。如果已經安裝了pip,您可以使用pip安裝請求直接安裝。

中文文檔的地址是here =(organic)| ut mcmd = organic;playerid = 81568911;_ _ utmb = 94650624 . 23 . 10.1490672820 ",

連接':“保持活動”,

引用者“:/”}

#設置代理服務器

代理= {

元素(url):

hot_comments_list = []

Hot_comments_list.append(u“用戶ID用戶昵稱用戶頭像地址評論時間喜歡總評論內容”)

Params = get_params(1) #第1頁

encSecKey = get_encSecKey()

json_text = get_json(url,params,encSecKey)

json_dict = json.loads(json_text)

Hot _ comments = JSON _ dict ['熱門評論'] #熱門評論

打印(" ***有%d條熱門評論!"% len(熱門評論))

對於熱門評論中的項目:

Comment = item['content'] #評論內容

LikedCount = item['likedCount'] #總喜歡數

Comment_time = item['time'] #註釋時間(時間戳)

UserID = item['用戶']['用戶ID'] #評論者ID

昵稱=項目['用戶'] ['昵稱'] #昵稱

《阿凡達》網址=項目['用戶'] ['頭像網址'] #頭像地址

comment_info = userID + " " +昵稱+" "+avatar URL+" "+comment _ time+" "+liked count+" "+comment+u " "

hot _ comments _ list . append(comment _ info)

返回熱門評論列表

#捕捉對壹首歌曲的所有評論

定義獲取所有評論(url):

All_comments_list = [] #存儲所有評論。

All_comments_list.append(u "用戶ID用戶昵稱用戶頭像地址評論時間喜歡總評論內容)#頭信息

params = get_params(1)

encSecKey = get_encSecKey()

json_text = get_json(url,params,encSecKey)

json_dict = json.loads(json_text)

comments _ num = int(JSON _ dict[' total '])

if(comments_num % 20 == 0):