python3爬取全民K歌


Python3爬取全民k歌

環境 python3.5 + requests

1.通過歌曲主頁鏈接爬取

首先打開歌曲主頁,打開開發者工具(F12)。
選擇Network,點擊播放,會發現有一個請求返回的資源是媒體類型,點擊查看這個請求,發現是歌曲的鏈接地址,請求為get請求。
Aaron Swartz

現在查看網頁源碼發現這個鏈接隱藏在網頁的JS腳本中,至此,我們只需要利用requests庫爬取歌曲的主頁,然后通過re模塊將我們需要的歌曲連接提取出來即可。
Aaron Swartz

2.通過用戶主頁爬取

首先我們觀察用戶首頁,發現每次加載是8首歌曲,點擊查看更多時地址欄並沒有變化,可以判斷歌單信息通過Ajax請求。

查看Network,找到歌單信息的請求,發現是GET方式,返回的是json,包含歌曲的主要信息。所以我們代碼中通過修改get請求參數就可以獲取所有的歌曲信息。
Aaron Swartz

Aaron Swartz

觀察網頁源碼,發現歌曲鏈接是由https://node.kg.qq.com/play?s= + Shareid + &g_f=personal構成。
Aaron Swartz

Aaron Swartz

所以,我們通過歌曲首頁,然后通過GET請求獲取包含歌曲信息的json數據,鏈接為https://node.kg.qq.com/cgi/fcgi-bin/kg_ugc_get_homepage,請求中有個share_uid,這個參數是用戶的ID,通過修改這個就可以獲取不同的用戶的歌曲了。
還有一個重要的參數是start,這個參數是用戶的歌單的頁數,依次+1就能獲取所有的歌曲信息,當之后沒有更多的歌曲時,可以發現返回的json數據中data內的參數has_more = 0,所以在代碼中通過判斷has_more來判斷是否跳出循環。

Aaron Swartz

獲取到數據后,我們通過re模塊來獲取我們需要的shareid以及歌曲的名字等等信息。

獲取了shareid后,我們就可以組建鏈接來下載歌曲了。

Aaron Swartz

代碼地址:https://github.com/Mrliu8023/getquanmin


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM