文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Python3爬虫】下载酷狗音乐上的歌

2023-01-30 22:12

关注

经过测试,可以下载要付费下载的歌曲(n_n)

 

 

步骤:

  打开酷狗音乐的官网,输入想要搜索的歌曲(例如《天后》),然后回车搜索,得到如下页面:

 

    右键检查或者按F12打开开发者工具,点击JS选项,查找到如下信息,FileName就是返回的歌手名和歌曲名信息,我们要将其提取出来:

   由于这个网址返回的不是标准的json格式,所以要先进行如下处理,然后再转换成json格式:

res = requests.get(url).text
js = json.loads(res[res.index('(') + 1:-2])
提取到歌曲信息之后,我们输入一个序号代表要下载的歌曲序号,然后把歌曲下载下来就好了。

运行截图:

 

附上源码:
 1 """
 2 Version: Python3.5
 3 Author: OniOn
 4 Site: http://www.cnblogs.com/TM0831/
 5 Time: 2019/2/15 12:07
 6 """
 7 import re
 8 import json
 9 import time
10 import requests
11 from fake_useragent import UserAgent
12 
13 ua = UserAgent()
14 
15 
16 def get_song(song_name):
17     search_url = "https://songsearch.kugou.com/song_search_v2?callback=jQuery112405132987859127838_1550204317910&page" \
18                  "=1&pagesize=30&userid=-1&clientver=&platform=WebFilter&tag=em&filter=2&iscorrection=1&privilege_fil" \
19                  "ter=0&_=1550204317912&keyword={}".format(song_name)
20     headers = {
21         "UserAgent": ua.random
22     }
23     res = requests.get(search_url, headers=headers)
24     start = re.search("jQuery\d+_\d+\(?", res.text)
25     js = json.loads(res.text.strip().lstrip(start.group()).rstrip(")"))  # 注意:末尾有一个换行需要去掉
26     song_list = js['data']['lists']
27 
28     for i in range(10):
29         print(str(i + 1) + ">>>" + str(song_list[i]['FileName']).replace('<em>', '').replace('</em>', ''))
30 
31     num = int(input("\n请输入您想要下载的歌曲序号:"))
32 
33     print("请稍等,下载歌曲中...")
34     time.sleep(1)
35 
36     file_hash = song_list[num-1]['FileHash']
37 
38     hash_url = "http://www.kugou.com/yy/index.php?r=play/getdata&hash={}".format(file_hash)
39     hash_res = requests.get(hash_url,headers=headers)
40     hash_js = hash_res.json()  # json格式
41     play_url = hash_js['data']['play_url']
42 
43     # 下载歌曲
44     try:
45         with open("music/" + song_name + ".mp3", "wb")as fp:
46             fp.write(requests.get(play_url).content)
47         print("歌曲已下载完成!")
48     except Exception as e:
49         print(e)
50 
51 
52 if __name__ == '__main__':
53     get_song(input("请输入您想要搜索的歌曲名称:"))
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯