首頁>技術>

恭祝大家春節愉快!

在介紹爬取音訊資料案例的課程中,我們大概講解了爬蟲應該知道和應該會一些知識。

在2021年春節長假期間,宅家或外出旅行,使用Python程式,能爬取自己喜歡的歌曲,聽自己喜歡的歌曲,伴隨自己和親人渡過這個愉快的節日,夫復何求!

不多說了,開幹!

首先,說說實現爬取歌曲的思路:
"""思路步驟:網址-請求&接收-解析和篩選-儲存檔案1. 爬取資料網站(url&headers)    爬取哪個網站的歌曲?url = 'https://www.xxx.com/';    爬取網站歌曲的偽裝?headers = {'User-Agent': ' '}2. 請求及接收:傳送和接收網站響應的資料(response物件和html文件)	  匯入第三方庫 requests3. 解析和篩選:對html文件進行篩選,篩選出自己需要的資料(歌曲列表和音樂資料)    匯入第三方庫 4. 儲存:對於得到的資料進行儲存"""
爬取資料網站:

安裝第三方庫:pip install requests, pip install lxml及匯入庫

import requests             # 匯入請求模組,向網站傳送請求及接收資料,自目標網址裡獲取網頁資料from lxml import etree      # 匯入lxml.etree模組,解析篩選網站響應的資料import time
headers = {   'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Mobile Safari/537.36'}url = 'https://music.xxx.com/artist?id=1156'

# 2. 向網站傳送請求獲取資料

response = requests.get(url)#print(response)                

圖1:執行輸出(response [200])代表請求成功

# 3.自網頁資料篩選出需要的資料

html = etree.HTML(response.text)                                            # 解析獲取的網頁資料music_idlist = html.xpath('//a[contains(@href,"/song?")]')      # 獲取音樂資料的標籤path = "D:/Download/music/"      # 將歌曲下載到指定路徑# 拆分單個音樂的標籤for data in music_idlist:			href = data.xpath('./@href')[0]                                      # 篩選出含歌曲的資訊			music_id = href.split("=")[1]                                          # 自歌曲資訊中篩選出歌曲id			music_name = data.xpath('./text()')[0]                          # 獲取歌曲名字			# 下載介面			base_url = 'https://music.xxx.com/song/url?id='			download_url = base_url + music_id                            # 拼接下載歌曲的完整url			musicdata = requests.get(download_url, headers=headers).content     # 請求歌曲的資料

# 4. 儲存音樂檔案:將獲得的音樂資料儲存為音樂檔案

with open(path+music_name+".mp3",'wb') as file:        # 建立一個空白的mp3檔案# with open('./163song/%s.mp3' % music_name, 'wb') as file:   			file.write(musicdata)                                   					  # 將請求得到的歌曲資料寫入空白的mp3檔案				time.sleep(0.3)print('<%s>下載成功' % music_name)

最後,執行爬蟲程式,爬取自己喜歡歌曲!

日期:2021年02月10日

32
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 春節假期學習日記之Nodejs(03)