03.11 python3.x爬取網易雲音樂,超詳細版(一)

在簡單學習了python爬蟲後,又想繼續折騰,進而找到了這個網易雲音樂,因為本人平時就是用它聽的歌,也喜歡看歌裡的評論,所以就爬網易雲音樂評論吧,那麼開始吧!

正式進入主題

首先還是去找目標網頁並開始分析網頁結構,如下

python3.x爬取網易雲音樂,超詳細版(一)

上面的三個箭頭都是所要找的數據,分別是評論用戶,評論和點贊數,都可以用正則表達式找出來,接下來繼續找怎樣找到下一頁的數據,還是用開發者工具,但是當點擊下一頁的時候,網頁的url沒有變,說明網頁是動態加載,所以就不能在當前網頁找數據了,應該在他的xhr文件裡找,所以點入network看看,然後也點擊下一頁一看,果然有想要的

python3.x爬取網易雲音樂,超詳細版(一)

看到這裡,就興奮地去敲代碼了

python3.x爬取網易雲音樂,超詳細版(一)

一點擊運行,結果什麼東西都沒有,但是他的狀態碼是200,明顯請求成功啊,卻沒有東西返回,再去network仔細看看這個網頁,看到他是個post請求,也看到了需要post兩個參數params和ensSecKey

python3.x爬取網易雲音樂,超詳細版(一)

一看到這個,密密麻麻的數字和字母,就猜應該是被加密了,不過可以複製下來看看有沒有用。接下來看下他的Response,咦,這是個json,不是html結構的,所以需要用到Json庫來進行解析

python3.x爬取網易雲音樂,超詳細版(一)

現在開始敲代碼吧,先把上面的兩個參數複製過來看看。

python3.x爬取網易雲音樂,超詳細版(一)

現在把每條評論的評論用戶和點贊數和評論獲取出來

python3.x爬取網易雲音樂,超詳細版(一)

可以看到,利用json.loads()方法把數據轉成python格式裡的字典後就可以把想要的數據取出來了,但是,下一頁怎樣取?總不能每次都複製粘貼那兩個參數吧?那唯一的方法就是不爬了。。怎麼可能?我的繼續,那我就要進行破解這兩個參數了,那好繼續看network,因為要加密,肯定要用js進行加密的

python3.x爬取網易雲音樂,超詳細版(一)

看到剛才那個網站的發起者core.js,,然後把它文件下載下來慢慢研究

python3.x爬取網易雲音樂,超詳細版(一)

保存後在經過美化,然後進行查找那個encSecKey參數(ps:JSj'e'tong'yang'de美化網址為www.css88.com/tool/js_bea…

python3.x爬取網易雲音樂,超詳細版(一)

看到window.asrsea()方法有四個參數,先不去管這個函數,先看看他的四個參數是什什,這裡沒必要去研究那四個參數怎樣來的,只需要知道他是什麼,那麼我們可以加點代碼上去讓他顯示出來,從而利用fiddler來進行調試

加入代碼如下

python3.x爬取網易雲音樂,超詳細版(一)

可以分別獲取上面的每一個參數,也把那個params獲取看看,然後在fiddler上操作如下

python3.x爬取網易雲音樂,超詳細版(一)

python3.x爬取網易雲音樂,超詳細版(一)

完成上面的設置後刷新網頁就可以在console上面找到參數信息,如果沒有的話這是因為你之前瀏覽該網頁的時候它被緩存了下來,所以要清除緩存文件(在清除瀏覽器記錄裡面有)

python3.x爬取網易雲音樂,超詳細版(一)

篇幅較長 ,分幾部分發。有興趣的小夥伴可以關注我。後續文章會補齊。

想學習交流python的,想要python資源的,可以先關注小編,然後私信“Python”,就能獲取,你還不心動嗎?心動就趕緊發私信 ,獲取資源


分享到:


相關文章: