码迷,mamicode.com
首页 > 其他好文 > 详细

爬虫:之下载QQ音乐(我还没有搞定,等我学了爬虫回来写你)

时间:2021-02-15 12:44:00      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:form   down   serve   ide   alt   file   sci   path   music   

技术图片
import requests
import re
import os
import json
import time as t


class QQmusic():
    """代码仅供学习"""

    def __init__(self):
        """初始化"""
        self.headers = {
            Accept-Encoding: gzip, deflate, sdch,
            Accept-Language: en-US,en;q=0.8,
            User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36,
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8,
            Referer: http://www.baidu.com/,
            Connection: keep-alive,
        }
        self.names = []
        self.order =  

    def search(self):
        """搜索"""
        w = input("请输入歌曲名: ")
        url_0 = "https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=61460539676714578&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w={0}&g_tk_new_20200303=5381&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8&notice=0&platform=yqq.json&needNewCode=0".format(
            w)
        res_0 = requests.get(url_0, headers=self.headers)  # 第一层,搜索页
        res_0.encoding = res_0.apparent_encoding
        res_0 = res_0.json()  # dict
        music_list = res_0["data"]["song"]["list"]
        print("共计" + str(len(music_list)) + "结果: ")

        all_singers = []
        a = 0
        for music in music_list:
            singer = music["singer"][0]["title"]  # 歌手名
            name = str(a) + "  " + music["title"]  # 歌曲名
            all_singers.append(singer)
            self.names.append(name)
            a = a + 1
        infs = dict(zip(self.names, all_singers))
        infs = json.dumps(infs, ensure_ascii=False, indent=4, separators=(,, :))
        infs = infs.replace(",  )
        infs = infs.replace(:, ——————)
        print(infs)

        self.order = input("请输入歌曲前的序号:")
        songmid = res_0[data][song][list][int(self.order)][mid]
        url_1 = "https://u.y.qq.com/cgi-bin/musicu.fcg?format=json&data=%7B%22req_0%22%3A%7B%22module%22%3A%22vkey.GetVkeyServer%22%2C%22method%22%3A%22CgiGetVkey%22%2C%22param%22%3A%7B%22guid%22%3A%22358840384%22%2C%22songmid%22%3A%5B%22{}%22%5D%2C%22songtype%22%3A%5B0%5D%2C%22uin%22%3A%221443481947%22%2C%22loginflag%22%3A1%2C%22platform%22%3A%2220%22%7D%7D%2C%22comm%22%3A%7B%22uin%22%3A%2218585073516%22%2C%22format%22%3A%22json%22%2C%22ct%22%3A24%2C%22cv%22%3A0%7D%7D".format(songmid)
        res_1 = requests.get(url_1, headers=self.headers)
        res_1.encoding = res_1.apparent_encoding
        res_1 = res_1.json()  # dict
        purl = res_1[req_0][data][midurlinfo][0][purl]
        url_2 = "https://isure.stream.qqmusic.qq.com/" + purl
        return url_2

    def download(self):
        """下载"""
        res_2 = requests.get(self.search(), headers=self.headers).content
        fir = self.names[int(self.order)]
        tit = re.sub(r\d+, ‘‘, fir)
        now = os.getcwd()
        now = os.path.join(now, "qq音乐 ")
        if not os.path.exists(now):
            os.mkdir(now)
        os.chdir(now)
        file_name = tit + .mflac
        with open(file_name, wb) as f:
            f.write(res_2)


one_file = QQmusic()
one_file.download()
View Code

 

爬虫:之下载QQ音乐(我还没有搞定,等我学了爬虫回来写你)

标签:form   down   serve   ide   alt   file   sci   path   music   

原文地址:https://www.cnblogs.com/3-wusen/p/14398301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!