今天刷水木看到一個問貼,如何下載喜馬拉雅音頻文件?
看了幾個回帖,有人說app端可以下載,有人說需要解密,也有人說可以用錄屏大師翻錄一下
這里,我提出一個新的解決辦法,就是從原網頁中抽絲剝繭的找到源文件,直接右鍵下載到本地
當然,如果是批量下載的話需要借住python3爬蟲,因為是格式化的json數據,找到了規則非常簡單,可以參考我之前寫的網易雲歌曲的下載方法
這里就不再重復貼出代碼了
首先打開喜馬拉雅網頁版,隨便點擊一個節目,這里我用平時常聽的“早安英文”舉例
https://www.ximalaya.com/waiyu/3373990/222313675
按F12打開開發者工具,然后選擇network下的ALL或者XHL
點擊播放音頻按鍵,觀察開發者工具中的變化,可以發現迅速的刷新出來很多條
找到開頭為audio的這一條(不要問我為什么不選其他的,這是爬多了的經驗啊經驗!)
單擊這一條,觀察右側,copy出來框圖的網址,在瀏覽器中打開此網址
這里推薦使用Chrome瀏覽器,並且使用FEhelper這個插件,因為網址中的數據是json格式的,用這個插件會自動美化
copy上圖中src這個鏈接,通過瀏覽器打開會有驚喜呦,如下圖所示:
點擊旁邊的“點點點”就下載就ok啦(不同的瀏覽器可能會略有區別)
測試了一下,可以正常播放,默認的文件格式是.m4a(我也不造這是啥格式嘛……)
至此,怎么下載單個音頻文件搞定了。
總結一下規律,其實就是找到scr這個鏈接,但是發現這個鏈接音頻的命名貌似並沒有什么規律可循,因此還是要追溯到上一層級
https://www.ximalaya.com/revision/play/v1/audio?id=222313675&ptype=1
我們來看一下這個網址的規則,其實就是id不同,那么對於其他的節目而言,只要把id值更換即可
id值就是原網頁中的啦https://www.ximalaya.com/waiyu/3373990/222313675 紅色部分啦
bingo!
如果是想批量下載一個專輯的音頻文件,怎么辦呢?
首先還是回到“早安英文”首頁上,紅色的部分其實就是專輯ID
https://www.ximalaya.com/waiyu/3373990/
同樣是按F12打開開發者工具,找到右側框圖里的網址
並通過瀏覽器打開https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=3373990&pageNum=1
網址中紅色部分就是專輯ID以及頁碼數
獲取的json信息中可看到,單個的音頻信息都在tracks中,其中trackId就是單個音頻文件的id,也就是需要我們爬取下來的音頻id
下拉到這個json信息的最后,可看到本頁音頻文件數量和頁碼數
總結一下怎么批量下載一個專輯里的所有音頻文件:
1. 找到這個專輯的ID號,通過打開瀏覽器網頁觀察
2.構建獲取json數據的網址,格式如下:
https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=專輯ID&pageNum=頁碼數
3. 獲取json數據中每個音頻文件的ID 即trackId
4. 構建每個音頻文件的json數據網址,格式如下:
https://www.ximalaya.com/revision/play/v1/audio?id=單個音頻文件ID&ptype=1
5. 通過瀏覽器打開步驟4的網頁,即可下載文件
6. 遍歷步驟2的每頁