返回
如何使用 Node.js 爬取网易云歌曲列表并下载
前端
2023-09-28 21:39:53
为什么我们要这样做?
- 手动下载歌曲太耗时。
- 有时我们需要下载整张专辑或歌单中的所有歌曲。
- 使用爬虫可以自动完成这些任务,节省时间和精力。
准备工作
在开始之前,您需要确保已经安装了以下软件:
- Node.js
- npm
- request
- cheerio
第 1 步:创建 Node.js 项目
创建一个新的 Node.js 项目,并安装必要的库:
mkdir my-project
cd my-project
npm init -y
npm install request cheerio
第 2 步:编写爬虫代码
在项目目录中创建一个名为 index.js
的文件,并添加以下代码:
const request = require('request');
const cheerio = require('cheerio');
// 定义网易云音乐歌曲列表的URL
const url = 'https://music.163.com/playlist?id=3778678';
// 发送HTTP请求,获取歌曲列表页面
request(url, (error, response, body) => {
if (error) {
console.error(error);
return;
}
// 解析HTML页面
const $ = cheerio.load(body);
// 提取歌曲列表
const songs = [];
$('.song-item').each((i, element) => {
const song = {
title: $(element).find('.song-title').text(),
artist: $(element).find('.song-artist').text(),
url: $(element).find('.song-link').attr('href')
};
songs.push(song);
});
// 打印歌曲列表
console.log(songs);
});
第 3 步:运行爬虫
在终端中运行以下命令来运行爬虫:
node index.js
第 4 步:下载歌曲
现在您已经获取到了歌曲列表,就可以使用 request
库来下载歌曲了。您可以将以下代码添加到 index.js
文件的底部:
// 下载歌曲
songs.forEach((song) => {
const songUrl = `https://music.163.com${song.url}`;
request(songUrl)
.pipe(fs.createWriteStream(`./songs/${song.title}.mp3`));
});
第 5 步:测试爬虫
运行以下命令来测试爬虫:
node index.js
爬虫将开始下载歌曲。您可以查看 ./songs
目录,看看歌曲是否已经下载完成。
恭喜!
您已经成功地使用 Node.js 编写了一个爬虫小程序,可以从网易云音乐网站上爬取歌曲列表并下载歌曲。您可以使用这个小程序来下载您喜欢的歌曲,或者将它集成到您的项目中。