# 從網(wǎng)易云音樂(lè)下載歌單歌曲
# 參考了這些網(wǎng)址
# https://blog.csdn.net/Ciiiiiing/article/details/62434438
# https://github.com/kunkun1230/Python-/tree/master/%E7%BD%91%E6%98%93%E4%BA%91%E9%9F%B3%E4%B9%90%20%E4%B8%8D%E5%86%8D%E7%8A%B9%E8%B1%AB%20%E8%AF%84%E8%AE%BA%E5%88%86%E6%9E%90
# https://www.zhihu.com/question/36081767
from Crypto.Cipher import AES
from bs4 import BeautifulSoup
import base64
import requests
import urllib.request
import os
import time
path = '../../files/網(wǎng)易云音樂(lè)'
flag = os.path.exists(path)
if not flag:
os.mkdir(path)
# 頭部信息 #需根據(jù)自己瀏覽器的信息進(jìn)行替換
headers = {
'Referer': 'http://music.163.com/',
'Host': 'music.163.com',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.3.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
# 獲取參數(shù)
def get_params(text):
first_key = "0CoJUm6Qyw8W8jud"
second_key = "FFFFFFFFFFFFFFFF"
h_encText = AES_encrypt(text, first_key)
h_encText = AES_encrypt(h_encText, second_key)
return h_encText
# 獲取 encSecKey
def get_encSecKey():
encSecKey = "257348aecb5e556c066de214e531faadd1c55d814f9be95fd06d6bff9f4c7a41f831f6394d5a3fd2e3881736d94a02ca919d952872e7d0a50ebfa1769a7a62d512f5f1ca21aec60bc3819a9c3ffca5eca9a0dba6d6f7249b06f5965ecfff3695b54e1c28f3f624750ed39e7de08fc8493242e26dbc4484a01c76f739e135637c"
return encSecKey
# 加密過(guò)程
def AES_encrypt(text, key):
iv = "0102030405060708"
pad = 16 - len(text) % 16
text = text + pad * chr(pad)
encryptor = AES.new(key, AES.MODE_CBC, iv)
encrypt_text = encryptor.encrypt(text)
encrypt_text = base64.b64encode(encrypt_text)
encrypt_text = str(encrypt_text, encoding="utf-8") # 注意一定要加上這一句赋兵,沒(méi)有這一句則出現(xiàn)錯(cuò)誤
return encrypt_text
# 下載歌曲
def get_mp3(name, song_id):
url = "http://music.163.com/weapi/song/enhance/player/url?csrf_token=" # 網(wǎng)易歌曲前綴
first_param = '{ids:"[%s]", br:"128000", csrf_token:""}' % song_id
data = {
"params": get_params(first_param).encode('utf-8'),
"encSecKey": get_encSecKey()
}
try:
response = requests.post(url, headers=headers, data=data)
result = response.json()
if result['code'] != 200:
print('!!! 歌曲[%s]下載失敗...' % name)
return
mp3_url = result['data'][0]['url']
urllib.request.urlretrieve(mp3_url, os.path.join('../../files/網(wǎng)易云音樂(lè)', name + '.mp3'))
print('歌曲[%s]下載完成...' % name)
except:
print('!!!歌曲[%s]下載出現(xiàn)異常...' % name)
if __name__ == "__main__":
print('開(kāi)始下載歌曲...\n================================================')
start_time = time.time() # 開(kāi)始時(shí)間
play_url = 'http://music.163.com/playlist?id=393565693' # 歌單-民謠還在路上
s = requests.session()
s = BeautifulSoup(s.get(play_url, headers=headers).content, 'lxml')
main = s.select('ul.f-hide li a')
for music in main:
song_id = music['href'][music['href'].find('id=') + len('id='):]
# print('歌曲名稱:{},歌曲Id:{}'.format(music.text, song_id))
get_mp3(music.text, song_id)
end_time = time.time() # 結(jié)束時(shí)間
print("程序耗時(shí)%f秒." % (end_time - start_time))
Python爬取網(wǎng)易云音樂(lè)歌單歌曲
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)复亏,“玉大人趾娃,你說(shuō)我怎么就攤上這事〉抻” “怎么了抬闷?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我笤成,道長(zhǎng)评架,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任炕泳,我火速辦了婚禮纵诞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘培遵。我一直安慰自己浙芙,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開(kāi)白布籽腕。 她就那樣靜靜地躺著嗡呼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪皇耗。 梳的紋絲不亂的頭發(fā)上南窗,一...
- 那天,我揣著相機(jī)與錄音郎楼,去河邊找鬼万伤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛呜袁,可吹牛的內(nèi)容都是我干的壕翩。 我是一名探鬼主播,決...
- 文/蒼蘭香墨 我猛地睜開(kāi)眼傅寡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼放妈!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起荐操,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤芜抒,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后托启,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體宅倒,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年屯耸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拐迁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布哈打,位于F島的核電站,受9級(jí)特大地震影響讯壶,放射性物質(zhì)發(fā)生泄漏料仗。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一伏蚊、第九天 我趴在偏房一處隱蔽的房頂上張望立轧。 院中可真熱鬧,春花似錦躏吊、人聲如沸氛改。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吓肋,卻和暖如春凳怨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背是鬼。 一陣腳步聲響...
- 正文 我出身青樓李剖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親囤耳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子篙顺,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- 序:python強(qiáng)大的功能德玫,可以爬取網(wǎng)上的某些信息,本次主要是通過(guò)爬歌單信息熟悉下python基礎(chǔ)椎麦。 用到知識(shí)點(diǎn):...
- 可以看出只有最后的數(shù)字在變化宰僧,所以進(jìn)行url的構(gòu)造,然后開(kāi)始爬取
- 一.分析思路 網(wǎng)易云音樂(lè)熱歌榜的頁(yè)面采用嵌入內(nèi)聯(lián)框架的方式,若爬蟲(chóng)直接從官網(wǎng)入口進(jìn)入訪問(wèn)熱歌榜http://mus...
- 一些注意事項(xiàng): 1.看了Coursera上面的python教程嘁捷,里面給了一個(gè)非常簡(jiǎn)單的示例造成,只傳一個(gè)url就獲取到...
- 1 暖冬 當(dāng)冬天開(kāi)始流浪 一條河流不再對(duì)著冰雪歌唱 當(dāng)夏天急于融化 冬的嚴(yán)寒 冬的天空 變得和土地一樣沉重 沉重 ...