零基础学Python-爬虫-5、下载音频

2022-11-28 16:46:17 浏览数 (1)

本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击【python爬虫】分类专栏进行倒序观看

【重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收益,只为大家学习分享。】

开发环境:【Win10】

开发工具:【Visual Studio 2019】

Python版本:【3.7】

总是版权问题,我就尽量删掉网站上的截图了,主要内容都在编码中。

目标:【更多-->音乐-->音乐页面】

1、查找目标位置:

播放的路径:【https://audio04.dmhmusic.com/71_53_T10049727031_128_4_1_0_sdk-cpm/cn/0208/M00/9C/D5/ChR47F0u0WCAGK0BAHsyIZRAuzg486.mp3?xcode=986ee76b251cf5ea7c25506b1e42484eca69d0d】

查看访问路径与需要参数:

2、解析路径,获取一个音乐集合的路径:

3、解析获取id与title

代码语言:javascript复制
import requests
import uuid
import random
import time
#可更换参数:tab={}&num={}我这里不多下载,10个就可以了。
url ="https://music.taihe.com/v1/song/info?sign=03f0d20475fe5fb6c669c50fb92778b5&appid=16073360&TSID=T10049727031,T10049726992,T10038911463,T10039002156,T10038856674,T10038856669,T10038926584,T10038926593,T10038992003,T10038992010,T10054620501,T10038818736,T10057229599,T10055694882,T10057217243,T10056317505,T10056970485,T10056970489,T10057218352,T10038929666,T10038902299,T10038928529,T10054168932,T10038980134,T10038980150,T10038818871,T10038859760,T10038859749,T10041237453,T10038833747,T10038873333,T10040588990,T10038992597&timestamp=1613374105"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
resp = requests.get(url, headers=headers)
resp_json = resp.json()
data_list = resp_json['data']
lst=[]
for x in data_list:
    print(x['id'])
    print(x['title'])

一共32个地址,一会看能下载多少音乐。

4、拼接单个音乐链接地址与下载音乐:

代码语言:javascript复制
import requests
import uuid
import random
import time
#可更换参数:tab={}&num={}我这里不多下载,10个就可以了。
url ="https://music.taihe.com/v1/song/info?sign=03f0d20475fe5fb6c669c50fb92778b5&appid=16073360&TSID=T10049727031,T10049726992,T10038911463,T10039002156,T10038856674,T10038856669,T10038926584,T10038926593,T10038992003,T10038992010,T10054620501,T10038818736,T10057229599,T10055694882,T10057217243,T10056317505,T10056970485,T10056970489,T10057218352,T10038929666,T10038902299,T10038928529,T10054168932,T10038980134,T10038980150,T10038818871,T10038859760,T10038859749,T10041237453,T10038833747,T10038873333,T10040588990,T10038992597&timestamp=1613374105"
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'}
resp = requests.get(url, headers=headers)
resp_json = resp.json()
data_list = resp_json['data']
lst=[]
for x in data_list:
    lst.append({"id":x["id"],"title":x["title"]})

#以下为存储过程
# 遍历列表存储所有图片
for item in lst:
    # 发送请求
    try:
       musicUrlBase=str.format("https://music.taihe.com/v1/song/tracklink?sign=14bcbe5b209a984dac25dad3b96c6dfb&appid=16073360&TSID={0}&timestamp=1613374106",item["id"]);
       resp1=requests.get(musicUrlBase)
       resp_json1 = resp1.json()
       pic= requests.get(resp_json1["data"]["path"], timeout=100)
    except:
        print ('错误:当前音乐无法下载')
        continue
    # uuid4为图片名称
    #,创建img文件夹, wb :写入二进制数据
    file=open(str.format("{0}.mp3",item["title"]), 'wb ')
    file.write(pic.content)
    file.close()
    print(item["title"],"下载完毕")
    #每次操作完休息1~3s
    timeStop=random.randint(1,4)
    time.sleep(timeStop)
print("完成")

5、音乐播放测试:

6、总结:

a)、下载过程中有无法下载的音乐,没有具体测试原因。

b)、可以试试其它网站,因为百度大家都知晓,我就用这个测试了。其它的也就是第一步麻烦一些,找吧,找吧,习惯就好了。

0 人点赞