admin管理员组文章数量:1583571
Pyhton酷我音乐爬取MP3文件案例
一、数据爬取思路分析
找到数据来源,通过浏览器抓包工具
通过网络标签和关键字搜索
查看网页源代码,找到数据位置
确定实现思路和技术实现方式
二、代码实现
发送请求
获取数据
解析数据
保存数据
使用会员登录可下载所有列表歌曲,非会员只能下载免费的MP3歌曲
支持分页下载,下载所有分页列表歌曲
关注微信公众号【站在前沿】,回复kuwo,获取完整代码下载地址
kuwo.py
def downMp3s(musicIds, musicNames):
for musicId, musicName in zip(musicIds, musicNames):
url = f'http://www.kuwo/api/v1/www/music/playUrl?mid={musicId}&type=music&httpsStatus=1&reqId=7e2a25c3-51e3-11ee-b0bd-49dd3fc18b18&plat=web_www&from='
# logging.debug(until.getResJson(url=url, headers=headers))
code = until.getResJson(url=url, headers=headers)['code']
if code == 200:
downUrl = until.getResJson(url=url, headers=headers)['data']['url']
# logging.debug(downUrl)
until.downBinFile(downUrl, '', 'mp3', musicName + '.mp3')
logging.info('歌曲:' + musicName + '.mp3 下载完成')
elif code == -1:
logging.info('歌曲:' + musicName + '为付费内容,无法下载')
else:
logging.info('歌曲:' + musicName + '下载时返回Code为' + code)
if __name__ == '__main__':
urlMp3List = 'http://www.kuwo/api/www/bang/bang/musicList'
params = {
"bangId": "93",
"pn": "1",
"rn": "20",
"httpsStatus": "1",
"reqId": "787a5650-51e8-11ee-adef-53b278c91f8b",
"plat": "web_www",
"from": ""
}
for pn in range(1, 16):
params['pn'] = str(pn)
mp3List = until.getResJson3(urlMp3List, headers, params)
# pprint.pprint(mp3List)
musicIds = []
musicNames = []
for i in range(0, 20):
musicIds.append(mp3List['data']['musicList'][i]['rid'])
musicNames.append(mp3List['data']['musicList'][i]['name'])
# logging.debug(musicIds)
# logging.debug(musicNames)
# 开始下载当前页的歌曲列表
downMp3s(musicIds, musicNames)
logging.info('===============第' + str(pn) + '页下载完成=================')
关注微信公众号【站在前沿】,回复kuwo,获取完整代码下载地址
版权声明:本文标题:Pyhton酷我音乐爬取,爬虫MP3文件下载核心代码 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727919294a1138028.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论