日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python爬虫网易云音乐评论最多的歌_Python网易云音乐评论爬虫,歌曲的全部评论...

發(fā)布時(shí)間:2023/12/19 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫网易云音乐评论最多的歌_Python网易云音乐评论爬虫,歌曲的全部评论... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

用過網(wǎng)易云音樂聽歌的朋友都知道,網(wǎng)易云音樂每首歌曲后面都有很多評(píng)論,熱門歌曲的評(píng)論更是接近百萬或者是超過百萬條.現(xiàn)在我就來分享一下如何爬取網(wǎng)易云音樂歌曲的全部評(píng)論,由于網(wǎng)易云音樂的評(píng)論都做了混淆加密處理,因此我們需要深入了解它的加密過程之后才能爬取到網(wǎng)易云音樂歌曲的全部評(píng)論.

一,首先分析數(shù)據(jù)的請(qǐng)求方式

網(wǎng)易云音樂歌曲頁(yè)面的URL形式為https://music.163.com/#/song?id=歌曲id號(hào),這里我用Delacey的Dream it possible 為例進(jìn)行講解,它的URL為https://music.163.com/#/song?id=38592976.接下來開始分析數(shù)據(jù)的請(qǐng)求方式.

由于網(wǎng)易云音樂的評(píng)論是通過Ajax傳輸,我們打開瀏覽器的開發(fā)者工具(檢查元素),選中控制面板中的Network,再點(diǎn)擊XHR(捕獲ajax數(shù)據(jù)),然后點(diǎn)擊左上角的重新加載,會(huì)看到下面圖片中的數(shù)據(jù)請(qǐng)求列表

點(diǎn)擊R_SO_4_38592976?csrf_token=cdee144903c5a32e6752f50180329fc9這一行,再點(diǎn)擊Preview

發(fā)現(xiàn)我們所需要的數(shù)據(jù)就在這json格式的數(shù)據(jù)中,其中comments中是第一頁(yè)的全部評(píng)論,一共20條,hotcomments是精彩評(píng)論一共有15條,每首歌曲只有第一頁(yè)評(píng)論才有精彩評(píng)論.接著看一下它的請(qǐng)求頭,點(diǎn)擊Headers

我們發(fā)現(xiàn)的它是個(gè)post請(qǐng)求,向下滑你會(huì)發(fā)現(xiàn)這個(gè)post請(qǐng)求還帶有數(shù)據(jù)

這些數(shù)據(jù)都是經(jīng)過加密處理的,因此我們需要分析它的加密過程來生成相應(yīng)的參數(shù),然后把加密后的參數(shù)加到post請(qǐng)求中才能獲取到我們需要的評(píng)論數(shù)據(jù).

二,分析加密過程

通過斷點(diǎn)調(diào)試發(fā)現(xiàn)params和encSecKey是由js腳本中的window.asrsea()函數(shù)生成的.

我們發(fā)現(xiàn)window.asrsea()函數(shù)有4個(gè)參數(shù),在瀏覽器的js控制臺(tái)分別對(duì)這四個(gè)參數(shù)進(jìn)行調(diào)試:

后面三個(gè)參數(shù)是定值,只有第一個(gè)參數(shù)是控制評(píng)論頁(yè)面偏移量的參數(shù),它是一個(gè)變量.筆者經(jīng)過分析發(fā)現(xiàn)第一個(gè)參數(shù)的形式是:

下面我來詳細(xì)講解這個(gè)變量的發(fā)現(xiàn)過程:

首先找到core_dfe56728795d119e4d476fd09ea2dc51.js這個(gè)js腳本,然后將斷點(diǎn)打在第12973行,點(diǎn)擊第一頁(yè)評(píng)論,頁(yè)面加載到斷點(diǎn)處便停止了

然后按下電腦的Esc鍵打開js控制臺(tái),輸入i1x,查看第一個(gè)變量:

這是第一頁(yè)的i1x的值,接下來看第二頁(yè)的(需要點(diǎn)擊第2頁(yè),然后輸入i1x的值):

再看第3頁(yè):

再看第4頁(yè):

通過這幾頁(yè)的分析,我們可以得到i1x值的變化規(guī)律,且可以得到它的一般形式:

offset和limit是必選參數(shù),其他參數(shù)是可選的,其他參數(shù)不影響data數(shù)據(jù)的生成,offset (頁(yè)面偏移量) = (頁(yè)數(shù)-1) * 20, 注意limit最大值為100,當(dāng)設(shè)為100時(shí),獲取第二頁(yè)時(shí),默認(rèn)前一頁(yè)是20個(gè)評(píng)論,也就是說第二頁(yè)最新評(píng)論有80個(gè),有20個(gè)是第一頁(yè)顯示的.因此我們可以構(gòu)造第一個(gè)參數(shù)為:

接下來,我們來看一下window.asrsea()函數(shù)的整個(gè)加密過程:

window.asrsea()函數(shù)就是上面的d函數(shù),現(xiàn)在我們來看函數(shù)d:

參數(shù)h.encText是經(jīng)過兩次AES加密得到的,h.encSecKey是經(jīng)過一次RSA加密得到的,其中i是隨機(jī)生成的長(zhǎng)度為16的隨機(jī)字符串.

三,生成加密參數(shù)

首先我們需要生成長(zhǎng)度為16的隨機(jī)字符串,這里我們仿照上面的javascript的實(shí)現(xiàn),用Python生成16位長(zhǎng)的隨機(jī)字符串:

接著用Python實(shí)現(xiàn)AES加密,這里要用到pycrypto庫(kù),先安裝好這個(gè)庫(kù):

然后導(dǎo)入加密模塊:

由于AES加密的明文長(zhǎng)度必須是16的倍數(shù),因此我們需要對(duì)明文進(jìn)行必要的填充,以滿足它的長(zhǎng)度是16的倍數(shù):

AES加密的模式是AES.MODE_CBC,初始化向量iv=’0102030405060708′,具體的AES加密:

然后是RSA加密.首先我簡(jiǎn)單介紹一下RSA的加密過程.在RSA中,明文,密鑰和密文都是數(shù)字.RSA的加密過程可以用下列的公式來表達(dá),這個(gè)公式非常的重要,你只有理解了這個(gè)公式,才能用Python實(shí)現(xiàn)RSA加密.

RSA的密文是對(duì)代表明文的數(shù)字的E次方求mod N 的結(jié)果, 通俗的講就是將明文和自己做E次乘法,然后將其結(jié)果除以N 求余數(shù),這個(gè)余數(shù)就是密文.

下面來看具體的RSA加密代碼實(shí)現(xiàn):

RSA加密后得到的字符串長(zhǎng)為256,這里不夠長(zhǎng)我們用x字符填充.

最后就是獲取那兩個(gè)加密參數(shù):

四,獲取全部評(píng)論

上面我們獲取到了兩個(gè)參數(shù)encText和encSecKey,利用這兩個(gè)參數(shù)來構(gòu)造post表單數(shù)據(jù)(Form Data),即data的值:

歌曲評(píng)論的URL為:

然后把data加到post的參數(shù)中去就能獲取到j(luò)son格式的評(píng)論數(shù)據(jù).

至此,獲取網(wǎng)易云音樂全部評(píng)論的Python爬蟲實(shí)現(xiàn)原理分析全部完成!

總結(jié)

以上是生活随笔為你收集整理的python爬虫网易云音乐评论最多的歌_Python网易云音乐评论爬虫,歌曲的全部评论...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。