新四季網

網易雲音樂導出本地音樂(網易雲音樂導出歌單)

2023-05-28 18:33:04 1

動機是啥

隨著之前版權大戰的落幕,網易雲音樂坐擁最忠實的一批用戶,但是卻在版權上缺失了一大塊,帶給用戶很不好的使用體驗。於是很多人紛紛轉戰QQ音樂等其他競品。

本來我也就是偶爾聽個響,對於聽歌沒有太大的需求,再一方面也是情懷,所以沒有積極擁抱QQ音樂。但是實在架不住每次在網易雲音樂要聽啥歌沒有啥,潛移默化地也就轉移到了QQ音樂上。

到了QQ音樂一看,誒嘿,這不行啊,我辛辛苦苦積攢的家底兒都沒了嘛這不是?就光禿禿的「我喜歡」,還大小沒幾首歌。這讓習慣了網易雲日推的我怎麼能習慣啊……

好了,以上都是前情提要。

實際上這篇文章的寫作動機就是要把網易雲音樂的歌單導入到QQ音樂中去。

本身QQ音樂提供了一個導入網易雲音樂歌單的小公舉,啊不,咳咳,是小工具。但是奈何出於不可名狀的原因,這個工具常年出於抽風狀態。其具體症狀見下圖:

於是乎,官方是靠不住的了。

大力水手曾經曰過:「靠山山倒,靠人人跑。只有靠自己,最好。」自己動手,豐衣足食,現在這個社會誰還沒點兒技術了嗎?

選擇的方法

好吧我承認,我沒有技術……

那好傢夥,直接用我們社會主義勞動人民的老朋友requests來獲取頁面信息,返回來的倒也說不上是亂碼,但就是沒有咱們真正需要的內容——歌曲名稱。

行吧,那我配置一下User-Agent。我去還是不行?

咋還出來了一個SSLError?這啥?

上網一查,還得手動關閉SSL證書驗證。行叭,走你~

啊不對,不登錄好像看不到完整的歌單?那就先登錄吧。登錄完好像還得在請求頭裡面加上用cookie來保持認證身份?……

不就是這麼一個頁面,要啥技術啊,看我暴力破拆。

開工

首先在頁面上點擊滑鼠右鍵,選中「檢查」這一項;或者不點擊滑鼠,直接按下快捷鍵Ctrl Shift I。會彈出Chrome瀏覽器的控制臺。此時找到其中的元素,這個元素裡邊包含的就是我們想要的歌單了。

在這個標籤內部又分為兩大部分:和。通過移動滑鼠觀察頁面變化,可以發現中的內容是主體。

再然後,輕易可以發現中的每個子條目都對應於歌單中的一首歌:

抓住這個點就是一頓分析(瘋狂查找),一直找到最小的對應於歌曲名字的標籤:

行了,現在差不多可以開始編程了。

咱也不用假模假樣再去用requests一頓爬了,直接copy-paste搞腚,呸,搞定。

滑鼠選中,右鍵點擊,依次選擇:

然後新建一個HTML文件,粘貼,保存,哈哈,數據爬下來啦~

請叫我人工全智能手動爬蟲工程師。

接下來再利用vscode的HTML格式化插件,把一行的HTML格式化一下,大概就長這樣了:

文件有了,那接下來就好辦了。

Python先把文件打開,把文件內容給讀取進來:

with open("test.html", "r",) as f: content = f.read

此處f.read返回一個由文本內容組成的字符串,我們使用BeautifulSoup來進行解析:

from bs4 import BeautifulSoupresponse = BeautifulSoup(content,'lxml')

仔細考察節點內容,會發現每首歌的名字都在一個特殊的標籤中,並且只在歌名處使用了這個標籤,因此我們可以直接調用find_all方法來獲取相應節點:

results = response.find_all("b")

由於歌曲名字是以標籤的屬性title形式存在的,因此我們可以通過節點直接獲取相應的屬性值:

for result in results: print(result['title'])# 笑紅塵 - (電影《東方不敗之風雲再起》主題曲)# 愛你在心口難開# 得意的笑# 寂寞在唱歌# ...

最後,我們將得到的歌曲名字統一保存為一個名為「SongList.txt」的文本文件,導出歌單的工作就大功告成了。

with open("SongList.txt", "w ",) as f: f.writelines([result["title"] for result in results])

此時結果都擠成一堆,所以我們還需要為每一個歌名末尾手動添加一個換行符,最終程序如下:

from bs4 import BeautifulSoupwith open("test.html", "r",) as f: content = f.readresponse = BeautifulSoup(content,'lxml')results = response.find_all("b")with open("SongList.txt", "w ",) as f: f.writelines([result["title"] "\n" for result in results])

別看文章寫了這麼多,其實代碼非常之簡短(畢竟真正有難度的部分已經由資深人工全智能爬蟲工程師代勞了),歌單導出已經搞腚了。

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了