使用python下載音樂,小白也能夠寫爬蟲html
**
簡介:使用BeautifulSoup和request模塊進行抓取和解析,
最後保存音樂(注:音樂質量是普通品質的)
在這裏順便給你們推薦一個資源很全的python學習免非解答.裙 :七衣衣九七七巴而五(數字的諧音)轉換下能夠找到了,這裏有資深程序員分享之前學習心得,學習筆記,還有一線企業的工做經驗,且給你們精心整理一份python零基礎到項目實戰的資料,天天給你們講解python最新的技術,前景,學習須要留言的小細節
關於模塊的安裝,打開cmd輸入python
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元素是空的(#)。這個連接並非真正的歌單連接。dom
但經尋找會發現source中有個不同的網頁連接ide
接下來咱們會找到這個連接https://music.163.com/song?id=1407551413,看一眼是否是不太同樣。和原連接就一個‘/#’之差,內容就不同,這是網易雲隱藏了源網頁。
而後仔細查看就能夠找到音樂id和名稱學習
接下來就是代碼實現了url
import requests
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import timeorm
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最新的技術,前景,學習須要留言的小細節
本文的文字及圖片來源於網絡加上本身的想法,僅供學習、交流使用,不具備任何商業用途,版權歸原做者全部,若有問題請及時聯繫咱們以做處理。