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

简介: 爬虫:之下载QQ音乐(我还没有搞定,等我学了爬虫回来写你)
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()
相关文章
|
4月前
|
数据采集 Python
Python爬虫:实现爬取、下载网站数据的几种方法
Python爬虫:实现爬取、下载网站数据的几种方法
427 1
|
9天前
|
数据采集 JavaScript C#
C#图像爬虫实战:从Walmart网站下载图片
C#图像爬虫实战:从Walmart网站下载图片
|
11月前
|
数据采集 定位技术 PHP
简单而高效:使用PHP爬虫从网易音乐获取音频的方法
网易音乐是一个流行的在线音乐平台,提供了海量的音乐资源和服务。如果你想从网易音乐下载音频文件,你可能会遇到一些困难,因为网易音乐对其音频资源进行了加密和防盗链的处理。本文将介绍一种使用PHP爬虫从网易音乐获取音频的方法,该方法简单而高效,只需几行代码就可以实现。
110 0
简单而高效:使用PHP爬虫从网易音乐获取音频的方法
|
4月前
|
数据采集 Web App开发 数据处理
Ruby网络爬虫教程:从入门到精通下载图片
Ruby网络爬虫教程:从入门到精通下载图片
|
数据采集 Python
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
121 0
爬虫第一次笔记 urllib的基本使用 urllib一个类型,六个方法 urllib下载 urllib请求对象的定制
|
数据采集 Python
Python爬虫系列16-采集网易音乐百万好听的歌曲进行批量下载
业精于勤而荒于嬉,行成于思而毁于随。 吃得苦中苦,方为人上人,受得累中累,方成富贵人。完全赞同
Python爬虫系列16-采集网易音乐百万好听的歌曲进行批量下载
|
数据采集 Python
Python黑科技系列15-爬虫自动化工具-VIP付费文章数据下载
不要惧怕还未到来的结果,要坚信,人生那么长,执着努力的人,一定会被时光温柔以待。愿一切为之努力的事情,都有浪漫的结果。不动声色地变好,每一天都要比昨天更加好。仅此一生,当然要全力以赴。
Python黑科技系列15-爬虫自动化工具-VIP付费文章数据下载
|
数据采集 存储 编解码
Python爬虫系列4-优化普通数据下载性能的速度
很多人在学习爬虫的时候,总是参照着书本中的内容或者是从网上学习的案例,但是那些案例你会,别人也会 ,如此怎么能提高我们的市场竞争力呢?Tony老师不服,于是,此篇文章顺利诞生;也是想让大家在学习的过程中真正的 **学以致用** 。
Python爬虫系列4-优化普通数据下载性能的速度
|
数据采集 Python
Python爬虫:使用requests库下载大文件
Python爬虫:使用requests库下载大文件
374 0
|
数据采集 Python
教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!
教大家如何使用**python爬虫爬取1万份**『ppt模板』,以后制作ppt再也不怕了没有模板了!!!
354 0
教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!