使用python下載音樂,小白也可以寫爬蟲 **簡介:使用BeautifulSoup和request模塊進行抓取和解析,最後保存音樂(註:音樂質量是普通品質的)在這裡順便給大家推薦一個資源很全的python學習免非解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,這裡有資深程式員分享以前 ...
使用python下載音樂,小白也可以寫爬蟲
**
簡介:使用BeautifulSoup和request模塊進行抓取和解析,
最後保存音樂(註:音樂質量是普通品質的)
在這裡順便給大家推薦一個資源很全的python學習免非解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,這裡有資深程式員分享以前學習心得,學習筆記,還有一線企業的工作經驗,且給大家精心整理一份python零基礎到項目實戰的資料,每天給大家講解python最新的技術,前景,學習需要留言的小細節
關於模塊的安裝,打開cmd輸入
pip install bs4 //安裝BeautifulSoup
pip install requests //安裝requests
pip install fake_useragent //這個模塊可以隨機生成一個headers
(不能安裝請升級pip或者以管理員模式打開cmd)
我們這裡爬取的是網易雲音樂
https://music.163.com/artist?id=4292 //爬取的鏈接
http://music.163.com/song/media/outer/url?id= //音樂播放外鏈鏈接
首先:我們先進行網頁源碼獲取
https://music.163.com/#/artist?id=4292
最開始我們是直接來用這個鏈接來請求網頁的,但是我們會發現返回的href元素是空的(#)。這個鏈接並不是真正的歌單鏈接。
但經尋找會發現source中有個不一樣的網頁鏈接
接下來我們會找到這個鏈接https://music.163.com/song?id=1407551413,看一眼是不是不太一樣。和原鏈接就一個‘/#’之差,內容就不一樣,這是網易雲隱藏了源網頁。
然後仔細查看就可以找到音樂id和名稱
接下來就是代碼實現了
import requests
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import time
def get_html():
url = 'https://music.163.com/artist?id=4292'
headers = {
'User-Agent': UserAgent().random #隨機一個模仿瀏覽器請求頭
}
response = requests.get(url, headers=headers)
res = BeautifulSoup(response.text, 'lxml')
id_lists = res.find(class_='f-hide').find_all('a')
return id_lists
def download(names,hrefs):
#獲取音樂id後還要進行解析並保存
headers = {
'User-Agent': UserAgent().random
}
#這裡還要再加個headers,不然會假數據
url = 'http://music.163.com/song/media/outer/url?id='
#網易雲外鏈地址,通過這個可以免費下載
response = requests.get(url+hrefs,headers=headers).content
#返回二進位
f = open('E:\\music\\{}.mp3'.format(names),'wb') #這裡下載的歌曲儲存到E盤music文件夾
f.write(response)
print('正在下載{}'.format(names))
if __name__ == '__main__':
get_html()
for id_url in get_html():
names = id_url.text
hrefs = id_url['href'][9:]
#用變數來接收歌曲名和id
download(names,hrefs)
time.sleep(1) #睡眠一秒,防止過於頻繁訪問
如果你想下載其他歌曲可以把url中的鏈接換掉,註意把‘/#’刪除以獲取真正的鏈接。這個代碼適用於歌單和專輯
最後順便給大家推薦一個資源很全的python學習免非解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下可以找到了,這裡有資深程式員分享以前學習心得,學習筆記,還有一線企業的工作經驗,且給大家精心整理一份python零基礎到項目實戰的資料,每天給大家講解python最新的技術,前景,學習需要留言的小細節
本文的文字及圖片來源於網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。