想听一首歌好难?程序员教你一键下载

2023-05-16

1.首先要先安装一下Python第三方库

  • requests #pip install requests
  • prettytable # pip install PrettyTable

2.使用的开发环境:

  • 版 本: python 3.8
  • 编辑器:pycharm 2021.2

3.先给你们来一个思路

在这里插入图片描述
不管你以后爬那个网站,安装这个思路就对了!

注意:不建议学习bs4,懂的都懂

4.接下来,咱们正式开始

今天咱们就搞定它

# *改成k
url='https://www.*uwo.cn/'

导入模块

import requests
from urllib import parse
import prettytable as pt

添加请求头

headers = {
    # 浏览器基本信息
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
    # 辨别用户的身份
    'Cookie': '*',
    # 认证令牌
    'csrf': 'C713RK6IJ8J',
    # 指定的请求资源的域名
    # *改成k
    'Host': 'www.*uwo.cn',
    # 用来跟踪Web请求来自哪个页面,是从什么网站来的。
    'Referer': 'http://www.*uwo.cn/search/list?key='+searchKey
}

下载指定歌曲:

# *改成k
url = f'http://www.*uwo.cn/api/www/search/searchMusicBykeyWord?key={searchKey}&pn=1&rn=30'
json_data = requests.get(url=url, headers=headers).json()
song_list = json_data['data']['list']
count = 0
info_list = []
tb = pt.PrettyTable()
tb.field_names = ['序号', '歌名', '歌手', '专辑']
for song in song_list:
    singer_name = song['artist']
    song_name = song['name']
    album_name = song['album']
    rid = song['rid']
    info_list.append([rid, song_name, singer_name])
    tb.add_row([count, song_name, singer_name, album_name])
    # *改成k
    song_info_url = f'https://www.*uwo.cn/api/v1/www/music/playUrl?mid={rid}&type=convert_url3&br=320kmp3'
    music_url = requests.get(song_info_url, headers=headers).json()['data']['url']
    music_data = requests.get(music_url).content
    with open(f'download/{singer_name}-{song_name}.mp3', mode='wb') as f:
        f.write(music_data)
        print(f'{song_name}', '下载完成!!!')
    count += 1
print(tb)

后面再加一个功能,实现自定义下载:

    input_index = eval(input("请输入要下载歌曲的序号(-1退出): "))
    if input_index == -1:
        break
    download_info = info_list[input_index]
    # 流畅音质  128k
    # 高频音质  192k
    # 超品音质  320k
    # *改成k
    song_info_url = f'https://www.*uwo.cn/api/v1/www/music/playUrl?mid={download_info[0]}&type=convert_url3&br=320kmp3'
    music_url = requests.get(song_info_url, headers=headers).json()['data']['url']
    music_data = requests.get(music_url).content
    with open(f'download/{download_info[1]}-{download_info[2]}.mp3', mode='wb') as f:
        f.write(music_data)
        print(f'{download_info[1]}', '下载完成!!!')

5.效果展示:

在这里插入图片描述

学会了嘛?需要源码可以留言、私信我。

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

Python基础入门教程推荐:←点击左边蓝色文字就可以跳转观看了

Python爬虫案例教程推荐:←点击左边蓝色文字就可以跳转观看了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

想听一首歌好难?程序员教你一键下载 的相关文章

  • c++ threadpool.h

    threadpool h include lt pthread h gt include lt semaphore h gt include lt iostream gt include lt vector gt using namespa
  • java从http url下载文件的简单方法

    br br import java io File br import java net URL br br import org apache commons io FileUtils br br public class Downloa
  • idea运行Sparkstreaming读取hdfs文件遇到的问题

    先贴代码 idea中运行SparkStreaming时 xff0c 动态添加文件至指定目录下 xff0c 结果没有任务信息输出 问题原因 xff1a idea所在主机时间和hdfs集群时间不同步 代码中指定的hdfs目录为非空 启动之前已经
  • [HDU1085][HDU1028][HDU2013] 组合数学入门(母函数、递推)

    先来说一说母函数 xff0c 今天是第一次学 杭电关于母函数的PPT感觉不错 xff0c 挺适合入门看看的 什么是母函数 xff1f 对于序列a0 xff0c a1 xff0c a2 xff0c 构造一函数 xff1a G x 61 a0
  • Elasticsearch系列-Elasticsearch入门教程

    引言 Elasticsearch是著名的开源分布式搜索和数据处理平台 xff0c 是一个基于Lucene的分布式 实时 全文搜索系统 xff0c 其稳定 可靠 高可用 可大规模扩展等特性 xff0c 使得Elasticsearch的应用十分
  • Elasticsearch系列-Elasticsearch集群工作原理

    引言 ELasticsearch作为一个分布式搜索引擎 xff0c 能够出色地支持集群模式 动态水平扩容 故障转移等分布式系统特性 xff0c 这是其作为全文搜索引擎首选的重要原因 本文从零开始描述集群的配置和扩容过程 xff0c 让你对E
  • Elasticsearch系列-集群API(一)

    引言 Elasticsearch提供了大量了的Rest API用以操作Elastic search的相关功能 xff0c 提供了极大的便利 xff0c 掌握这些API是熟练地使用Elasticsearch的前提 Elastic search
  • JVM系列-CPU使用率高问题排查方法

    引言 Java程序在实际生产过程中经常遇到CPU使用率高的问题 xff0c 那么应该如何排查问题的原因呢 xff0c 本文大概描述一下排查方法 一 排查占用CPU的进程 使用top命令 xff0c 在大写打开的情况下按P键或者在大写没有打开
  • python判断list中的值是否完全一样

    对于一个python的list a span class token operator 61 span span class token punctuation span span class token number 1 span spa
  • 生产问题排查-SSLException:Unrecognized SSL message,plainetxt connection异常排查

    引言 最近在一次生产问题中遇到了SSLException Unrecognized SSL message plainetxt connection错误异常信息 xff0c 背景为调用微信api 获取相应信息的时候报错 xff0c 微信ap
  • 【云原生】本地搭建Openshift单机最小化开发环境

    文章目录 一 什么是CodeReady Container xff08 CRC xff09 xff1f 二 本地化部署CodeReady Container三 Code Ready Container的使用 公众号 xff1a MCNU云原
  • 手把手kubernetes本地化部署(含疑难杂症排查解析)

    文章目录 一 什么是Kubernetes xff1f 二 Kubernetes的基本概念PodDeploymentServiceNamespaceConfigMapSecret 三 Kuberntes单机本地部署3 1 安装minikube
  • chatGPT大规模使用kubernetes,云原生技术在AI领域也大有可为

    文章目录 一 云原生在AI领域的应用方向1 1 弹性部署1 2 自动化和可维护性1 3安全性和隔离性 二 云原生在AI领域的应用案例2 1 chatGPT全面使用云原生技术2 2 TensorFlow Serving和k8s及docker的
  • 数据清洗经验

    平时习惯了在某些特定的数据集合上做实验 xff0c 简单的tokenization 预处理等步骤就足够了 但是在数据越来越大的年代 xff0c 数据清洗越来越重要 xff0c 也越来越复杂 看到Philip J Guo 的这篇英文文章 Pa
  • Jetson Nano平台常用软件工具

    本文介绍几个Jetson Nano平台常用的小工具 1 jtop jtop可以查看Jetson Nano目前CPU工作负载情况 xff0c 当前温度等信息 安装方法 xff1a sudo apt get install python pip
  • 如何计算前缀,网络,子网和主机号?

    计算网络掩码长度 xff08 也称为前缀 xff09 xff1a 将网络掩码的点分十进制表示形式转换为二进制 然后 xff0c 从第一个八位位组的最高有效位 xff08 即二进制数的左侧 xff09 开始 xff0c 计算连续的1位的数目
  • Pascal's Triangle(帕斯卡三角形)

    题目 xff1a Given numRows generate the first numRows of Pascal 39 s triangle xff08 杨辉三角 xff09 For example given numRows 61
  • kubernetes集群calico网络部署

    kubernetes 集群 calico 网络部署 一 部署环境及架构 操作系统 ubuntu 14 04 Kubernetes 1 3 5 Etcd 版本 2 2 1 Docker 版本 1 1 0 1 calicoctl 版本 xff1
  • OVN架构原理

    ovn architecture 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方手册 xff0c 有删减 OVN架构 OVN xff08 即Open Virtual Network xff09 是
  • python正则匹配中文/英文/数字/其它字符

    匹配提取 一些字符串既包含中文 也包含英文 数字等 xff0c 需要对这类字符串做提取 xff0c 单个中文字符 英文单词以及数字表达等 需要采用正则匹配的方式来做 比如对于如下针对数据的描述 Android IOS 2条装 xff08 0

随机推荐

  • OVS和OVN 2.8新功能

    OVS和OVN 2 8新功能 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方文档 本文档主要是关于2017年8月底发布的Open vSwitch 2 8中添加的内容 xff0c 重点介绍OVN中的
  • OSPF基础

    OSPF 1 ospf天生无环 是因为使用了SPF算法 该算法的概述是 选择一条花费最少而且没有环路的路径 2 ospf里有三张表 a 邻居表 ospf使用hello报文来发现并维持邻居关系 使用ospf的路由器每10s向相连的路由器发送h
  • OSPF状态机

    1 状态down 进程刚刚开始 路由器发送hello包 2 状态attempt 只出现在NBMA网络类型中 指路由器尽最大的努力去建立邻居 每隔hello间隔就发送hello包 但是还是未收到对方的hello包 2 状态init 路由器收到
  • OSPF分组类型

    1 hello包 目的地址永远是224 0 0 5 ip层协议号是89 包含了 1 唯一标识自己的RID 2 所属的区域AREA 3 hello间隔 死亡时间 缺省10 40 4 DR和BDR的RID 5 接口优先级 6 网络类型 7 验证
  • BGP基础详解

    BGP 边界网关协议 公有AS号 1 64511 私有AS号 64512 65535 状态机 1 idle 空闲 这时候刚刚指定邻居 邻居一定要可达 通过IGP或者静态路由 用loopback接口要注意更新源 ebgp邻居要写多跳
  • STP基础

    交换机使用专用集成电路ASIC来创建并维护其过滤表 cisco交换机上没有aux端口 交换机不需要任何IP 给交换机设置IP纯粹是为了管理的需要 1 交换网络一般分为三个层次 接入层 分布层 核心层 其中 接入层接入用户 分布层做各种流量策
  • VLAN基础

    1 默认时 交换机分割冲突域 路由器分割广播域 默认时 路由器过滤广播 交换机转发广播到所有网段 默认时 交换机上所有端口都是VLAN1的成员 VLAN1是管理VLAN 不能删除和修改 每个VLAN就是一个广播域 如果想要实现VLAN之间的
  • DHCP snooping

    一 采用DHCP服务的常见问题 架设DHCP服务器可以为客户端自动分配IP地址 掩码 默认网关 DNS服务器等网络参数 xff0c 简化了网络配置 xff0c 提高了管理效率 但在DHCP服务的管理上存在一些问题 xff0c 常见的有 xf
  • 组播技术架构

    组播基础 span class hljs attribute 1 保留的组播地址 224 0 0 1 224 0 0 255 公网上的组播地址 224 0 1 0 238 255 255 255 私网上的组播地址 239 0 0 0 239
  • python中的三元运算符

    python中没有类似java或c 43 43 中的 三元运算符 xff0c 如果想用类似的结构 xff0c 可以用if else来代替 x span class token operator 61 span span class toke
  • 关于派生类构造函数与基类构造函数的调用顺序问题

    面向对象程序设计基础 xff08 第二版 李师贤等 xff0c 第254页 xff1a C 43 43 语言的基本规则是 xff1a 创建一个派生类的对象时 xff0c 如果基类带有构造函数 xff0c 则先调用基类的构造函数 xff0c
  • C++中的strrev函数

    C 43 43 中的strrev函数 C 43 43 中有函数strrev xff0c 功能是对字符串实现反转 xff0c 但是要记住 xff0c strrev函数只对字符数组有效 xff0c 对string类型是无效的 具体见下面代码 x
  • 工厂模式(Factory Pattern)

    Java工厂模式 xff08 Factory Pattern xff09 是一种创建型设计模式 xff0c 它提供了一个通用的接口来创建对象 xff0c 但允许子类决定实例化哪个类 这种模式通过将对象的创建委托给工厂类来实现 xff0c 从
  • Java建造者模式(Builder Pattern)

    ava建造者模式 xff08 Builder Pattern xff09 是一种创建型设计模式 xff0c 它将对象的构建过程分离出来 xff0c 使得可以使用相同的构建过程来创建不同的对象表示形式 建造者模式通常用于创建复杂的对象 xff
  • Can‘t uninstall ‘scipy‘. No files were found to uninstall.以及scipy安装问题解决方法

    ubuntu系统下使用pip uninstall scipy命令卸载包时 遇到报错信息为 Found existing installation span class token operator span scipy span class
  • Package ‘libssl1.0.0‘ has no installation candidate

    安装libssl1 0 0失败 xff0c 问题 xff1a Package libssl1 0 0 has no installation candidate 解决方法 xff1a sudo apt get install build e
  • IDR 学习笔记

    Multiview Neural Surface Reconstruction by Disentangling Geometry and Appearance 主页 xff1a https lioryariv github io idr
  • Debian 11 驱动问题解决方法

    Debian 11 驱动问题解决方法 前言问题解决方法升级内核安装 Firmware Linux 前言 下面是作者在安装时的系统版本和无法驱动的硬件信息 xff1a Debian 镜像 xff1a debian 11 6 0 amd64 D
  • 使用windows引导的ubuntu双操作系统

    避坑指南 bios 取消安全boot 安全启动 快速启动 报rst错误的 把 bois 里的 SATA config 把inter 改为ahci 没报请无视 作为码农 xff0c 总会时不时的需要使用linux的开发环境 xff0c 使用虚
  • 想听一首歌好难?程序员教你一键下载

    1 首先要先安装一下Python第三方库 requests pip install requestsprettytable pip install PrettyTable 2 使用的开发环境 xff1a 版 本 xff1a python 3