当前位置: 首页 > news >正文

写一个音乐爬虫

今天我们写一个网易云音乐的爬虫,爬取网易云音乐热歌榜音乐链接并下载,这里用到了之前引用的BeautifulSoup和requests。

BeautifulSoup是一个Python库,用于从HTML和XML文件中提取数据。它提供了一种简单的方式来遍历文档树和搜索文档树中的元素,从而使得从网页中提取数据变得更加容易。BeautifulSoup还可以处理不完整的标记和编码问题,并具有广泛的解析器支持。

img

requests是一个Python库,用于向网站发送HTTP请求并获取响应。它提供了一种简单的方式来发送HTTP请求,包括GET、POST、PUT、DELETE等常见的请求方法。requests库还支持HTTP身份验证、Cookie、代理等功能,并具有简单易用的API接口。使用requests库可以轻松地编写Python程序来访问Web API、爬取网页数据等。

我们在工程里直接安装这两个模块:pip install bs4 requests

下面是程序源码:

import requests #请求模块 用Python模拟浏览器向服务器发起请求
from bs4 import BeautifulSoup #在html提取数据
#1.确定 获取网址
url = "https://music.163.com/discover/toplist?id=3778678"
#2.发送请求
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}
res = requests.get(url=url,headers=headers)
#3.筛选数据  xpath  re json bs4 pyquery
#数据预处理   获取整体界面
soup = BeautifulSoup(res.text,'html.parser')
#匹配对应的数据,音乐名称
result = soup.find('ul',class_='f-hide')
infor = result.find_all('a')
idlist = []  #存放ID
namelist = [] #存放名字
number = 0 #歌曲的序号
for i in infor:number = number+1name = i.text #音乐名字# <a href="/song?id=1917957092">爱</a>result = i.get('href')#result结果就是href后边的数据值#/song?id=1917957092id = result[9:]idlist.append(id)Newurl = 'https://music.163.com/'+resultnamelist.append(name)print(str(number)+' '+name+' '+Newurl)#4.保存数据 ()[]{}
def download():while True:a = input("请输入你要下载的歌曲的序号:")b = int(a)-1aa = idlist[b]musicName = namelist[b]url = 'http://music.163.com/song/media/outer/url?id={}.mp3'.format(aa)music = requests.get(url=url,headers=headers).contentwith open('{}.mp3'.format(musicName),'wb')as f:f.write(music)print(musicName+'下载完毕!')
download()

我们直接运行测试一下

img

能看到爬取的200首歌曲名称和链接,下载测试一下。比如选择200.断线

稍等片刻后下载完毕。

img

感兴趣的同学运行源码试一下。

http://www.sczhlp.com/news/395.html

相关文章:

  • 写一个3D旋转的python程序
  • 网页爬虫
  • 能够直接生成矢量图的AI工具
  • PS的AI插件--Alpaca
  • 【旧文】Adobe Express使用教程
  • 点云之间的距离和像素尺寸的大小之间是什么换算关系
  • HCIE学习之路:路由引入
  • HCIE学习之路:MSTP实现负载均衡实验
  • Linux系统安装配置Redis集群
  • TOP10迪士尼动画电影下载_公主系列迪士尼电影大全列表在线观看
  • python中pandas包的基本用法
  • 如何用两年时间面试一个人(by jobleap.cn)
  • 读后感
  • HCIE学习之路:一个NAT实验
  • HCIE学习之路:配置基于静态路由的GRE隧道
  • 2025年PLM合规性管理,6大策略,确保项目合法合规!
  • 国内最值钱 IT 公司排行
  • Fastmcp 案例二(SSE)
  • 编译安装 pg_stat_statements
  • Anaconda历史版本
  • 输入未知数目的数据
  • 常见的结构光编解码算法
  • 七月
  • 【UNR #3】配对树 题解
  • 基于Java+Springboot+Vue开发的美容院-美甲店预约管理系统源码+运行步骤
  • 基于YOLOv8的狗狗品种(多达60种常见犬类)品种鉴别识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
  • 公钥和私钥的部分作用
  • 从0开始构建技术
  • Solon 集成 LiteFlow:轻量级工作流引擎的极简实践指南
  • 街道【概念】