使用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最新的技術,前景,學習需要留言的小細節
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/165934.html
標籤:Python
上一篇:Python初學者的幾個迷惑點
