天天看點

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

1.資料爬取

        python也快學了一個多月了,今天就來分享一下爬取QQ音樂評論的實戰例子吧。以周董的《說好不哭》為例:

        首先打開QQ音樂,搜尋說好不哭。翻到評論區後,使用谷歌浏覽器的檢查功能,找到Network部分進行抓包,發現評論區的内容是被封裝在json中的,如下圖所示:

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        commentlist清單中共包含25個元素,也就是一頁的評論數為25條。通過分析url可知,pagenum控制着頁數,以for循環即可獲得多頁網址。接下來就通過python來展示具體實作爬取評論的過程:

import requests
import xlwt
import os
import json
os.chdir('..//filepath//')  ##設定工作路徑
workbook=xlwt.Workbook(encoding='utf-8')
worksheet=workbook.add_sheet('說好不哭評論')
worksheet.write(0,0,'昵稱')
worksheet.write(0,1,'時間')
worksheet.write(0,2,'點贊數')
worksheet.write(0,3,'評論')
n=1
for page in range(0,200):
    print('-'*100)
    url_left='https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?g_tk=792727314&hostUin=0&format=json&inCharset=utf8&outCharset=GB2312&notice=0&platform=yqq.json&needNewCode=0&cid=205360772&reqtype=2&biztype=1&topid=237773700&cmd=8&needmusiccrit=0'
    url=url_left+'&pagenum='+str(page)+'&pagesize=25'
    headers={'User-agent':'Mozilla/5.0'}
    r=requests.get(url,headers=headers)
    data=json.loads(r.text)
    common_comments=data.get('comment').get('commentlist')
    for i in range(0,len(common_comments)):
        worksheet.write(n,0,common_comments[i].get('nick'))
        worksheet.write(n,1,common_comments[i].get('time'))
        worksheet.write(n,2,common_comments[i].get('praisenum'))
        worksheet.write(n,3,common_comments[i].get('rootcommentcontent'))
        n+=1
    print('第{}頁評論爬取完成'.format(str(page)))
    print('-'*100)
workbook.save('common-comments.xls')

           

        這裡爬取的是5000條的普通評論,根據同樣的分析方法,我們還可以爬取到133條熱門評論。最終爬取的資料如下:

        熱門評論資料:

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        普通評論資料:

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

2.可視化分析

        拿到資料後就可以進行可視化分析啦…首先我們先來看一下熱門評論的點贊數随時間變換的趨勢圖(這裡偷下懶…直接用excel作圖的)

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        不看不知道,一看吓一跳…《說好不哭》是9月17日淩晨正式上線的,可在9月14日淩晨已經有人評論了!而且到目前為止,點贊數最高的三個都是在17号之前釋出的…最高的點贊數更是高達6萬多!

        為啥我寫的評論老是上不了熱評呢?難道是因為寫的太少了?我篩選了點贊量大于500的評論,清洗了一下文字内容,繪制了點贊數與評論長度的散點圖:

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        從圖上來看,也并沒有呈現出評論長度越長,點贊量越高的趨勢嘛。不過,在點贊量高于過萬的評論中,明顯字數多的評論個數要多一些。

        當然啦,點贊數過萬的評論畢竟還是少數…我們還是來看下熱門評論的整體字數分布:

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        從圖上來看,大部分熱門評論的長度還是集中在80左右,還有一部分熱門評論的長度集中于280左右;由此可見,想要上熱門也不一定非要字數多嘛…

        我們再來看看大家喜歡什麼時候發評論吧:

        首先是熱門評論的:

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        時間大部分都集中在晚上11點到第二天的淩晨1點之間,這個時間點大家都守着新歌然後單曲循環吧…哈哈

        普通評論的呢?

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        從晚上6點後,評論數逐漸增多,評論數最多的時間段還是分布在晚上11點至淩晨之間,看來大家都是夜貓子呀…

        最後,通過詞雲圖,來看看熱門評論與普通評論所涉及的内容會不會有所不同…(推薦大家一個線上生成詞語圖的工具Wordart)

        熱門評論的詞雲圖:

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        除了人名和歌名外,詞頻較高的詞有"青春"、“喜歡”、“MV”、“阿信”、"奶茶"等,看來當時MV中出現阿信,大家還是很欣喜的…

        而普通評論呢?

Python爬蟲實戰(一) QQ音樂評論爬取及可視化分析

        詞頻較高的詞有"喜歡",“青春”,“好聽”,“小姨”,"唯一"等…令我很疑惑的是,為啥"小姨"的詞頻這麼高???(黑人問号臉.jpg)

        本期分享就到這為止啦,第一次寫部落格,還請多多指教~