第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【Python3爬蟲】網(wǎng)易云音樂(lè)歌單下載

標(biāo)簽:
Python

一、目标:

  下载网易云音乐热门歌单

 

二、用到的模块:

  requests,multiprocessing,re。

 

三、步骤:

  (1)页面分析:首先打开网易云音乐,选择热门歌单,可以看到以下歌单列表,然后打开开发者工具

https://img1.sycdn.imooc.com//5b8c167d0001f09a19150925.jpg

https://img1.sycdn.imooc.com//5b8c1694000159d311980173.jpg

   因此我们需要请求的url就是https://music.163.com/discover/playlist,然后用requests.get()方法请求页面,对于返回的结果,用正则表达式进行解析,得到歌单名字和歌单id,解析的正则表达式如下:

res = requests.get(url, headers=headers)
data = re.findall('<a title="(.*?)" href="/playlist\?id=(\d+)" class="msk"></a>', res.text)

  

  (2)得到歌单名字和歌单id后,构造歌单的url,然后模仿步骤(1)可以得到歌曲名字和歌曲id,解析的正则表达式如下:

re.findall(r'<a href="/song\?id=(\d+)">(.*?)</a>', res.text)

  再得到歌曲id后,构造歌曲的url,然后用requests.get().content方法下载歌曲,歌曲的url构造方法如下:

"http://music.163.com/song/media/outer/url?id=%s" %(歌曲id)

 

  (3)由于部分歌曲的名字并不能作为文件名保存下来,所以用到了try...except,对于不能保存为文件名的歌曲,我选择pass掉==

    

  (4)因为要下载多个歌单,一个歌单里又有很多歌曲,所以用到了multiprocessing模块的Pool方法,提高程序运行的效率。

 

四、具体代码

  因为下载所有歌单会需要很长时间,所以我们先下载前三个歌单试试==

复制代码

 1 import requests 2 import re 3 from multiprocessing import Pool 4  5 headers = { 6     'Referer': 'https://music.163.com/', 7     "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 " 8                   "Safari/537.36" 9 }10 11 12 def get_page(url):13     res = requests.get(url, headers=headers)14     data = re.findall('<a title="(.*?)" href="/playlist\?id=(\d+)" class="msk"></a>', res.text)15 16     pool = Pool(processes=4)17     pool.map(get_songs, data[:3])18     print("下载完毕!")19 20 21 def get_songs(data):22     playlist_url = "https://music.163.com/playlist?id=%s" % data[1]23     res = requests.get(playlist_url, headers=headers)24     for i in re.findall(r'<a href="/song\?id=(\d+)">(.*?)</a>', res.text):25         download_url = "http://music.163.com/song/media/outer/url?id=%s" % i[0]26         try:27             with open('music/' + i[1]+'.mp3', 'wb') as f:28                 f.write(requests.get(download_url).content)29         except FileNotFoundError:30             pass31         except OSError:32             pass33 34 35 if __name__ == '__main__':36     hot_url = "https://music.163.com/discover/playlist/?order=hot"37     get_page(hot_url)

复制代码

 

五、运行结果

https://img1.sycdn.imooc.com//5b8c169c000137a808920674.jpg

 原文出处:https://www.cnblogs.com/TM0831/p/9573619.html


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消