如何查出一個人寫的所有網易云音樂評論

用過網易云音樂聽歌的朋友都知道,網易云音樂每首歌曲后面都有很多評論,但如何在這么海量的評論里找出一個人寫的評論呢?并把這個人寫的所有評論爬取出來呢?下面是開發(fā)實例,如果不是開發(fā)人員,有需要可以找我?guī)兔Σ?,歡迎一起探討提供更好的方法。

具體實踐

接口分析

思路想好了,就去做,首先肯定是分析接口,結果卻發(fā)現接口發(fā)生了變化,之前的接口是不進行加密的,現在的接口每次的請求都帶上了 encSecKey 和 params 參數,顯然是加密了,于是在Github上發(fā)現了這個,網易云音樂新版WebAPI分析,是Python實現的,重要的部分是aesEncrypt和rsaEncrypt兩個加密的部分,完成這部分之后呢,后續(xù)工作就簡單的多了。


實踐方案

考慮到用戶歌單歌曲數量比較多的情況,在爬取歌曲評論的過程中,開啟多進程爬取是必要的,但又考慮到機器性能的原因,隊列執(zhí)行爬取功能也是必須的,不然機器可能在進程爆滿的情況效率各方面實在是堪憂啊。

為了考慮以后其它新功能的開發(fā),在此采用了Laravel5.4+PHP7.1環(huán)境下的開發(fā),一方面是Laravel開發(fā)的效率,另一方面Laravel在我提到的幾個問題上面都有相應的解決方案,數據的爬取則是采用了Laravel的artisan命令行,對于多進程則是采用了進程控制擴展PCNTL,但同時這個多進程爬取的過程則是放到了redis驅動下的隊列中,同時使用了Supervisor進行隊列的監(jiān)控,整個代碼我已經開放到Github。

clone 下來后配置完成后執(zhí)行:

也就是說我們只要通過模擬瀏覽器向網易云服務器發(fā)送post請求就能獲得評論!

這里還要注意這個post的鏈接,R_SO_4_ 之后跟的一串數字實際上就是這首歌曲對應的id;而且這里需要傳入的參數,也得好好分析一下(在后面)

所以現在目標就是:找到最新的所有歌單 -> 對每一個歌單,遍歷其中的所有歌曲,獲取網頁源碼中的所存在歌曲的id->對每一個首歌曲通過其id,向服務器post請求(帶上參數),得到想要的評論


這里還有一個判斷,根據評論總條數除以每頁20條的評論,判斷是否有余數,可以獲得最終評論的總頁數,并且我們也可以發(fā)現,熱門評論只在第一頁.傳入三個參數,分別為comment_TatalPage ,postUrl, headers1,對應評論總頁數,postUrl就是postUrl…以及請求頭對第一頁獲取熱評以及評論,對其他頁獲取普通評論;以及獲取其他數據,添加到列表中


這一步的目的就是獲取歌單里歌曲的id,遍歷對每一個歌曲(即對應的id),獲取其歌曲的url,歌曲名;根據id,構造postUrl 通過對第一頁的post(關于如何post得到想要的信息,在后面會講到),獲取評論的總條數,及總頁數;以及調用獲取歌曲評論的方法;

這里的getPostApi函數傳入的三個參數分別為,頁數(因為每頁的post附帶的參數params不相同),postURL以及請求頭;?

這里data=param,就是需要的參數?

然后在fiddler中重定向core.js,修改本地core.js的內容,可以打印上面的參數,結果第一次可以在控制臺看到打印的結果

php artisan netease:playlist 123456

將123456替換成網易云音樂用戶的 id,等待結束后,表 user_comments 就能看到用戶的評論了。


具體操作可以查看README.md感興趣的同學可以試著玩一玩,如果不是開發(fā)人員,可以私信我來爬取后再發(fā)給你,后續(xù)我會開發(fā)出線上的功能供大家使用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容