Python爬蟲實踐--爬取網易雲音樂
import os
import re
import json
import requests
from lxml import etree
def download_songs(url=None):
if url is None:
url = '
url = url.replace('/#', '').replace('https', 'http') # 對字串進行去空格和轉協議處理
# 網易雲音樂外鏈 url 介面:
out_link = '
# 請求頭
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Referer': '
'Host': 'music.163.com'
}
# 請求頁面的原始碼
res = requests.get(url=url, headers=headers).text
tree = etree.HTML(res)
# 音樂列表
song_list = tree.xpath('//ul[@class="f-hide"]/li/a')
# 如果是歌手頁面
artist_name_tree = tree.xpath('//h2[@id="artist-name"]/text()')
artist_name = str(artist_name_tree[0]) if artist_name_tree else None
# 如果是歌單頁面:
#song_list_tree = tree.xpath('//*[@id="m-playlist"]/div[1]/div/div/div[2]/div[2]/div/div[1]/table/tbody')
song_list_name_tree = tree.xpath('//h2[contains(@class,"f-ff2")]/text()')
song_list_name = str(song_list_name_tree[0]) if song_list_name_tree else None
# 設定音樂下載的資料夾為歌手名字或歌單名
folder = './' + artist_name if artist_name else './' + song_list_name
if not os.path.exists(folder):
os.mkdir(folder)
for i, s in enumerate(song_list):
href = str(s.xpath('./@href')[0])
song_id = href.split('=')[-1]
src = out_link + song_id # 拼接獲取音樂真實的 src 資源值
title = str(s.xpath('./text()')[0]) # 音樂的名字
filename =外匯跟單gendan5.com title + '.mp3'
filepath = folder + '/' + filename
print(' 開始下載第 {} 首音樂: {}\n'.format(i + 1, filename))
try: # 下載音樂
# 下載歌詞
#download_lyric(title, song_id)
data = requests.get(src).content # 音樂的二進位制資料
with open(filepath, 'wb') as f:
f.write(data)
except Exception as e:
print(e)
print('{} 首全部歌曲已經下載完畢! '.format(len(song_list)))
def download_lyric(song_name, song_id):
url = '{}&lv=-1&kv=-1&tv=-1'.format(song_id)
# 請求頭
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
'Referer': '
'Host': 'music.163.com'
# 'Origin': '
}
# 請求頁面的原始碼
res = requests.get(url=url, headers=headers).text
json_obj = json.loads(res)
lyric = json_obj['lrc']['lyric']
reg = re.compile(r'\[.*\]')
lrc_text = re.sub(reg, '', lyric).strip()
print(song_name, lrc_text)
if __name__ == '__main__':
#music_list = ' # 歌曲清單
music_list = ' # 歌手排行榜
# music_list = ' 全部 &limit=435&offset=435&s= 梁靜茹 ' # 搜尋列表
download_songs(music_list)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2855807/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python爬蟲實踐-網易雲音樂Python爬蟲
- python爬蟲:瞭解JS加密爬取網易雲音樂Python爬蟲JS加密
- Python 爬蟲獲取網易雲音樂歌手資訊Python爬蟲
- 如何用Python網路爬蟲爬取網易雲音樂歌曲Python爬蟲
- Python 爬蟲獲取網易雲音樂歌手歌詞Python爬蟲
- 用Python爬取網易雲音樂歌曲Python
- Python爬取網易雲音樂歌單歌曲Python
- Python爬蟲:逆向分析網易雲音樂加密引數Python爬蟲加密
- python 爬蟲 1 爬取酷狗音樂Python爬蟲
- 利用Python網路爬蟲抓取網易雲音樂歌詞Python爬蟲
- 第一彈:puppeteer爬蟲小demo —— 網易雲音樂爬蟲
- Python 爬取網易雲音樂 自動安裝所需模組Python
- Python 爬蟲QQ音樂Python爬蟲
- python3.x爬取網易雲音樂,超詳細版Python
- Python爬蟲之js加密破解,抓取網易雲音樂評論生成詞雲Python爬蟲JS加密
- 爬蟲實踐之獲取網易雲評論資料資訊爬蟲
- 網易雲音樂評論爬蟲(2):歌曲的全部評論爬蟲
- python3.基礎爬取網易雲音樂【超詳細版】Python
- python爬蟲之JS逆向某易雲音樂Python爬蟲JS
- 【Python爬蟲實戰】使用Selenium爬取QQ音樂歌曲及評論資訊Python爬蟲
- Java爬取網易雲音樂民謠並匯入Excel分析JavaExcel
- python爬取_網易雲音樂_ 姬和不如_MP3_獲取無損音源Python
- python爬取_網易雲音樂_你的姑娘 _MP3_獲取無損音源Python
- 網易雲音樂評論爬蟲(1):全部熱門歌曲及其 id 號爬蟲
- 手把手教你寫網路爬蟲(1):網易雲音樂歌單爬蟲
- Python逆向爬蟲入門教程: 網易雲音樂加密引數 params & encSecKey 逆向解析Python爬蟲加密
- Python 爬取百度音樂Python
- Python《爬蟲初實踐》Python爬蟲
- Java爬蟲系列之實戰:爬取酷狗音樂網 TOP500 的歌曲Java爬蟲
- 網易雲音樂機器學習平臺實踐機器學習
- RocketMQ 在網易雲音樂的實踐MQ
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python實現微博爬蟲,爬取新浪微博Python爬蟲
- 爬蟲——爬取貴陽房價(Python實現)爬蟲Python
- Python爬蟲實戰:爬取淘寶的商品資訊Python爬蟲
- 網易雲歌詞爬取(java)Java
- python爬蟲的最佳實踐(六)--爬蟲中的多程式Python爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲