吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2894|回复: 19
收起左侧

[Python 转载] 爬取酷X音乐

[复制链接]
玩丶火 发表于 2019-11-12 23:34
本帖最后由 wushaominkk 于 2019-11-13 19:06 编辑

这两天在学校学习了爬虫,闲来无事琢磨了关于酷我音乐爬取代码如下

import requests
import os
class Kuwo(object):
def init(self):
self.key=[]
self.url=[]
self.musicname=[]
self.k=0
def getKey(self):
name=input("请输入搜索音乐的名字:")
heads = {
'Accept': 'application/json, text/plain, /',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Cookie': 'Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1572856495,1572856564; Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1572856501,1572856570; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1572856670; Hm_lpvt_eaa57ca47dacb4ad4f5a257001a3457c=1572856676; kw_token=TA404V6U3ON',
'csrf': 'TA404V6U3ON',
'Host': 'www.kuwo.cn',
'Pragma': 'no-cache',
'Referer': 'http://www.kuwo.cn/search/list?key=%E5%8D%97%E6%96%B9%E5%A7%91%E5%A8%98',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'
}
url = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key="+name+"&pn=1&rn=30"
htmldata = requests.get(url,headers=heads)
data=htmldata.json()
print(len(data["data"]["list"]))
for count,i in enumerate(data["data"]["list"]):
print(count+1,i['artist'],"--",i['name'])
self.musicname.append(i['artist']+"--"+i['name'])
for i in range(30):
key=data["data"]["list"][i]["musicrid"]
key=key[6:]
self.key.append(key)
self.k=int(input("请输入需要下载歌曲的编号:"))
return self.key[self.k-1]
def getMusicUrl(self):
k=self.getKey()
url="http://www.kuwo.cn/url?format=mp3&rid="+k+"&type=convert_url3"
htmldata=requests.get(url)
data=htmldata.json()
url=data['url']
self.url=url
def Download(self):
mpath=os.getcwd()
mpath=os.path.join(mpath,"kuwomusic")
os.chdir(mpath)
music=requests.get(self.url)
music=music.content
f=open(self.musicname[self.k-1]+".mp3",'wb')
f.write(music)
f.close()
print("下载完成!")

if name == 'main':
if os.path.exists("kuwomusic"):
pass
else:
os.mkdir("kuwomusic")
music=Kuwo()
music.getMusicUrl()
music.Download()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
yiqiuyun + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

ciker_li 发表于 2019-11-13 22:37
整理了一下,总算能用了!
import requests
import os


class Kuwo(object):

    def __init__(self):
        self.key = []
        self.url = []
        self.musicname = []
        self.k = 0

    def getKey(self):
        name = input("请输入搜索音乐的名字:")
        heads = {
            'Accept': 'application/json, text/plain, /',
            'Accept-Encoding': 'gzip, deflate',
            'Accept-Language': 'zh-CN,zh;q=0.9',
            'Cache-Control': 'no-cache',
            'Connection': 'keep-alive',
            'Cookie': 'Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1572856495,1572856564; Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1572856501,1572856570; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1572856670; Hm_lpvt_eaa57ca47dacb4ad4f5a257001a3457c=1572856676; kw_token=TA404V6U3ON',
            'csrf': 'TA404V6U3ON',
            'Host': 'www.kuwo.cn',
            'Pragma': 'no-cache',
            'Referer': 'http://www.kuwo.cn/search/list?key=%E5%8D%97%E6%96%B9%E5%A7%91%E5%A8%98',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'
        }
        url = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key=" + name + "&pn=1&rn=30"
        htmldata = requests.get(url, headers=heads)
        data = htmldata.json()
        print(len(data["data"]["list"]))
        for count, i in enumerate(data["data"]["list"]):
            print(count + 1, i['artist'], "--", i['name'])
            self.musicname.append(i['artist'] + "--" + i['name'])
        for i in range(30):
            key = data["data"]["list"][i]["musicrid"]
            key = key[6:]
            self.key.append(key)
        self.k = int(input("请输入需要下载歌曲的编号:"))
        return self.key[self.k - 1]

    def getMusicUrl(self):
        k = self.getKey()
        url = "http://www.kuwo.cn/url?format=mp3&rid=" + k + "&type=convert_url3"
        htmldata = requests.get(url)
        data = htmldata.json()
        url = data['url']
        self.url = url

    def Download(self):
        mpath = os.getcwd()
        mpath = os.path.join(mpath, "kuwomusic")
        os.chdir(mpath)
        music = requests.get(self.url)
        music = music.content
        f = open(self.musicname[self.k - 1] + ".mp3", 'wb')
        f.write(music)
        f.close()
        print("下载完成!")


if __name__ == '__main__':
    if os.path.exists("kuwomusic"):
        pass
    else:
        os.mkdir("kuwomusic")
    music = Kuwo()
    music.getMusicUrl()
    music.Download()
ciker_li 发表于 2019-11-14 23:22
"for i in range(30):                                                    这里最好写成range(count),否则如果歌曲数不够30,会报错
            key = data["data"]["list"][i]["musicrid"]"
miqi1314 发表于 2019-11-13 09:04
Py破解群众 发表于 2019-11-13 11:19
没注释小白一枚,看起来有些地方不明白
sunshu 发表于 2019-11-13 11:42
看了一下,是不是写死了一个列表,然后再根据这个列表下载
人生苦短丶 发表于 2019-11-13 18:44
小白复制粘贴后,运行。。。咦,怎么这么多报错。。。。。
rose520rain 发表于 2019-11-13 18:51
还没测试你这代码呢,看代码好像可以下载音乐,是吗?
qijiazhiguo 发表于 2019-11-13 18:57
有些没有看懂,但还是支持楼主
猴氏智减员 发表于 2019-11-13 19:00
支持楼主
墨之韵 发表于 2019-11-13 22:44

支持楼主
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 17:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表