爬取 listen 1 网易云精选歌单歌曲

news/2024/7/19 9:53:08 标签: python, windows, pycharm, 编辑器, 爬虫


前言

看了下listen 1 网易云精选歌单和复制链接过去的歌单请求的网址是不一样的,暂时只做了网易云精选歌单的爬取,有时间会改进,占坑

如果需要listen 1网易的歌曲单个手动下,很简单的,拉到法二看就可以了


一、法一:

1.1、效果图

 

1.2、代码

代码直接复制过去运行就可以了,有做异常处理,应该不会报错,报错可以提出来哈,有时间再详细再解说代码

python"># encoding   :  utf-8
# @author    :  Phecda
# @IDE       :  PyCharm
# @project   :  Code
# @Time      :  2020/9/7 23:49
# @CSDN      :  https://blog.csdn.net/Megrez_Delta


import os
import pprint
import re

import requests

while True:
    # strip()去除首尾空格
    en = input("请输入listen1中encSeckey的值:".strip())
    pa = input("请输入listen1中params的值:".strip())

    # https://music.163.com/#/playlist?id=5096680172
    url = "https://music.163.com/weapi/v3/song/detail"

    data = {
        "encSecKey": en,
        "params": pa
    }
    response = requests.post(url=url, data=data)

    html = response.content.decode()
    # print(html)
    pattern = re.compile(r'{"name":".*?","id":\d+', re.S)
    # print(pattern)
    t = pattern.findall(html)

    # print(t)
    for s in t:
        # print(s)
        # print(type(s))
        fn = s.split('\"')[3]
        # 将不符合windows文件命名规范的文件名用 _ 替换
        file_name = re.sub(r'[/\:?*"<>|]+', '_', fn)
        file_id = s.split('\"')[6].strip('\:')
        # print(file_name)
        print('正在读取 {}.mp3'.format(file_name))
        # 网易外链下载
        file_url = "http://music.163.com/song/media/outer/url?id={}".format(file_id)
        file_dir = "E:\PyCharm\Code\Spider\网易云歌曲"
        file_path = r"{}/{}.mp3".format(file_dir, file_name)
        print(file_name, file_id, file_url)
        if not os.path.exists(file_dir):
            os.makedirs(file_dir)
        with open(file_path, "wb") as mu:
            try:
                # 伪装请求头
                headers = {
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}
                req = requests.get(file_url, headers=headers)
                # print("正在读取 {}.mp3".format(file_name))
                mu.write(req.content)
                # print(req)
                # 如果req有数据
                if req:
                    print("下载 {}.mp3 成功".format(file_name))
                    print()

            except Exception as e:
                print("读取 {}.mp3 失败".format(file_name))
                continue

 

1.3、运行

因为暂时不知道用js解密,所以运行是手动传参过去的,可能有点麻烦

1.进精选歌单首页,按F12打开开发者工具,选到Network模式

2.选择你想要爬取的歌单,点进去

 3.找到detail比较大的那个文件,比较小的那个歌曲不全

4.单击detail,找到Hearders滑到最下面的Form Data把enSecKey和params复制过去

 

 如果你没有改路径的话,你的文件在 E:\PyCharm\Code\Spider\网易云歌曲 就能找到

二、法二(手动下载单个歌曲)

2.1  F12进入开发者模式切换到Network下,再单击您想要下载的歌曲播放

 2.2 找到后缀名为 .m4a 的文件,双击就可以下载

 2.3拖到网易就能打开,或者将打开方式设置为网易云

 

2.4 确定 

 

2.5 可以看到你双击就会自动用网易云播放了

 

小福利:

送大家一个下载vip歌曲的网站   http://video.haokanba.top/music/


http://www.niftyadmin.cn/n/1850152.html

相关文章

学习与探讨

扎实学习和探讨C#、JAVA语言及简单的C语言小型开发。转载于:https://blog.51cto.com/newraincn/885134

SSM环境搭建及测试

SSM整合 使用Maven搭建基础web项目 导入所需坐标 创建domain、dao、service、controller pom.xml <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source>&l…

解决Pycharm中不自动补全第三方库代码问题

如图&#xff0c;安装scrapy库后&#xff0c;敲了个e并不能自动补全extract要全手打。 解决方法&#xff1a; File-->Settings-->Project Interpreter-->这个换成你python.exe的路径 点击右上角的 &#xff0c;搜索你不能自动补全代码的第三方库&#xff08;第三方库…

编程也讲禅,您读过《金刚经》吗?——ADO.NET核心类的灭度与SQLHelper的诞生——十八相送(上)...

源代码&#xff1a;13033480群共享 无助的时候&#xff0c;我曾读过N遍《金刚经》&#xff0c;讲到《金刚经》&#xff0c;我必须把爱因斯坦先拿来当我的档箭牌&#xff0c;不然&#xff0c;写这么个题目&#xff0c;我可能会被拍死&#xff1a; “如果世界上有一个宗教不但不与…

安装scrapy_redis时出现 [WinError 10061] 由于目标计算机积极拒绝,无法连接

报错如图所示&#xff1a; 大部分原因是开了代理服务器所导致&#xff0c;解决方案&#xff1a;关掉代理服务器就可以。 以win10为例&#xff1a;网络和Internet设置 --> 代理 --> 手动设置代理 --> 关 再次再cmd窗口下执行 pip 命令&#xff0c;就可以看到scrapy_re…

爬取某网站排行榜中的视频

所涉及到的知识点&#xff1a; 懒加载&#xff08;瀑布流&#xff09;&#xff0c;异步加载&#xff0c;请求头伪装&#xff0c;文件下载&#xff0c;正则查询/替换&#xff0c;json数据转换/提取 最终结果如图&#xff1a; 因涉及到版权问题&#xff0c;所有网址关键部分打码…

arcgis for android 学习 - (4) 了解mapView的一些方法和事件

我写了一个示例&#xff0c;用于展示了几个方法和事件的使用。直接在在代码里写了注释&#xff0c;那么直接贴代码。 ---------- 布局&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.an…

JDBC全文版

JDBC入门 概念 Java DataBase Connectivity Java 数据库连接&#xff0c; Java语言操作数据库 本质 它是官方&#xff08;sun公司&#xff09;定义的一套操作所有关系型数据库的规则&#xff0c;即接口。各个数据库厂商去实现这套接口&#xff0c;提供数据库驱动jar包。 我…