熱線電話:13121318867

登錄
首頁精彩閱讀爬取了陳奕迅新歌《我們》10萬條評論數據發現:原來,有些人只適合遇見
爬取了陳奕迅新歌《我們》10萬條評論數據發現:原來,有些人只適合遇見
2018-04-20
收藏

爬取了陳奕迅新歌《我們》10萬條評論數據發現:原來,有些人只適合遇見

最近就有一部“懷舊”題材的電影,未播先火,那就是劉若英的處女作——《后來的我們》。青春,愛情,夢想,一直是“懷舊”題材的核心要素,雖然電影現在還未上映,但先行發布的主題曲《我們》,已經虐哭了不少人。在MV里,歌聲清清淺淺,訴說著那些年關于愛情里的遺憾。

“我最大的遺憾,就是你的遺憾,與我有關”,下面就和小燈塔一起來感受一下吧。

這首歌是《后來的我們》中的主題曲,網易云音樂上線當天便席卷千萬+播放量,現如今光是網易云上面的評論就馬上突破了10萬條。

網易云音樂一直是我向往的“神壇”,聽音樂看到走心的評論的那一刻,高山流水。于是今天我們來抓取一下歌曲的熱門評論。并做成圖表、詞云來展示,看看相對于這首歌最讓人有感受的評論內容是什么。

1

抓數據

要想做成詞云圖表,首先得有數據才行。于是需要一點點的爬蟲技巧。

基本思路為:抓包分析、加密信息處理、抓取熱門評論信息

抓包分析

我們首先用瀏覽器打開網易云音樂的網頁版,進入陳奕迅《我們》歌曲頁面,可以看到下面有評論。接著F12進入開發者控制臺(審查元素)。

接下來就要做的是,找到歌曲評論對應的url,并分析驗證其數據跟網頁現實的數據是否吻合,步驟如下圖:

通過歌曲id輕松找到評論所在的鏈接

查看hreaders的信息,發現瀏覽器使用的是POST的方式進行的請求

具體字段如上圖,會發現表單中需要填兩個數據,名稱為params和encSecKey。后面緊跟的是一大串字符,換幾首歌會發現,每首歌的params和encSecKey都是不一樣的,因此,這兩個數據可能經過一個特定的算法進行加密過的

服務器返回的和評論相關的數據為json格式的,里面含有非常豐富的信息(比如有關評論者的信息,評論日期,點贊數,評論內容等等),其中hotComments就是我們要找的熱門評論,總共15條

那我們的思路就很清晰了,只需要分析這個api并模擬發送請求,獲取json進行解析就好了。

加密信息處理

然后經過我的測試,直接把瀏覽器上這倆數據拿過來就可以。但是要想真正的解決這個加密處理,還需要有點加解密的只是存儲。關于這兩個參數如何解密,強大的知乎上其實已經有答案的了,感興趣的朋友可以進去看一下

https://www.zhihu.com/question/36081767

我們在這里就只需要用我們這種偷懶的辦法就可以完成需求了。這里我就使用這么個臨時的方法好了,而且對于不同的歌曲是可以重用的,待會我們可以驗證一下。

抓取熱門評論信息

代碼塊如下:

import requestsimport jsonurl = 'http://music.163.com/weapi/v1/resource/comments/R_SO_4_551816010?csrf_token=568cec564ccadb5f1b29311ece2288f1'headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36', 'Referer':'http://music.163.com/song?id=551816010', 'Origin':'http://music.163.com', 'Host':'music.163.com'}

#加密數據,直接拿過來用

user_data = {

'params': 'vRlMDmFsdQgApSPW3Fuh93jGTi/ZN2hZ2MhdqMB503TZaIWYWujKWM4hAJnKoPdV7vMXi5GZX6iOa1aljfQwxnKsNT+5/uJKuxosmdhdBQxvX/uwXSOVdT+0RFcnSPtv',

'encSecKey': '46fddcef9ca665289ff5a8888aa2d3b0490e94ccffe48332eca2d2a775ee932624afea7e95f321d8565fd9101a8fbc5a9cadbe07daa61a27d18e4eb214ff83ad301255722b154f3c1dd1364570c60e3f003e15515de7c6ede0ca6ca255e8e39788c2f72877f64bc68d29fac51d33103c181cad6b0a297fe13cd55aa67333e3e5'

}

response = requests.post(url,headers=headers,data=user_data)

data = json.loads(response.text)

hotcomments = []

for hotcommment in data['hotComments']:

item = {

'nickname':hotcommment['user']['nickname'],

'content':hotcommment['content'],

'likedCount':hotcommment['likedCount']

}

hotcomments.append(item)

#獲取評論用戶名,內容,以及對應的獲贊數

content_list = [content['content'] for content in hotcomments]

nickname = [content['nickname'] for content in hotcomments]

liked_count = [content['likedCount'] for content in hotcomments]

2

數據可視化

在獲得相關評論數據后,我們將其做成圖表與詞云圖,將讓人看起來更直觀。

接下來需要在自己電腦上安裝需要相關的安裝包: pyecharts(圖表包)、matplotlib(繪圖功能包)、 WordCloud(詞云包)

其中,pyecharts 是一個用于生成 Echarts 圖表的類庫。 Echarts 是百度開源的一個數據可視化 JS 庫,主要用于數據可視化,同時pyecharts 兼容 Python2 和 Python3。安裝非常簡單,只需:

pip install pyecharts

關于WordCloud(詞云包)安裝過程中出現問題,可以看看我之前這篇文章:

https://zhuanlan.zhihu.com/p/33507393

接下來就是代碼的實現:

利用之前獲得評論用戶名和對應的點贊數,將其制作成圖表圖:

from pyecharts import Bar

bar = Bar("熱評中點贊數示例圖")

bar.add( "點贊數",nickname, liked_count, is_stack=True,mark_line=["min", "max"],mark_point=["average"])

bar.render()

由此可以看出,獲得最高贊數(95056)評論是:

@魚大叔Uncle:后來的我,離開了他,永遠的離開了他,十年的感情不過寥寥幾句話。后來的我,嫁給了一個很普通的人,沒有他的浪漫,卻有不一樣的溫暖。

大多數贊數為20000-30000之間,最低都達到7000+,(基本與網頁里評論中數據吻合)。

最后,我們將所有的熱門評論內容,制作成詞云圖展示出來,代碼塊如下:

from wordcloud import WordCloud

import matplotlib.pyplot as plt

content_text = " ".join(content_list)

wordcloud = WordCloud(font_path=r"C:simhei.ttf",max_words=200).generate(content_text)

plt.figure()

plt.imshow(wordcloud,interpolation='bilinear')

plt.axis('off')

plt.show()

結果圖:

從圖中可以看出,很多人感慨,后來只有你我,再無我們。

注明:所有數據,是屬于當時所爬取的數據。

3

后記

曾記得,郭敬明在書里寫,“我們太年輕,以致于都不知道以后的時光,竟然那么長,長得足夠讓我忘記你,足夠讓我重新喜歡一個人,就像當初喜歡你那樣?!?

我們這一生,總是遇到太多的后來。從不懂愛到懂愛,從擁有到珍惜。

所幸是到了最后,無論過了多少年。后來的我們,都在對方身上,學會了如何去愛。

就像陳奕迅在歌里唱的,“有過執著,放下執著”。有些人啊,光是遇見就已經值得了。

我們確實沒有了后來。

就讓后來的我們,慢慢走,別回頭。

不談虧欠,感謝遇見。

只是在下一次遇見愛的時候,我們都要學會更懂得珍惜。

這才是愛的意義,也是我們為什么去愛。

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢