返回

如何使用 Node.js 爬取网易云歌曲列表并下载

前端

为什么我们要这样做?

  • 手动下载歌曲太耗时。
  • 有时我们需要下载整张专辑或歌单中的所有歌曲。
  • 使用爬虫可以自动完成这些任务,节省时间和精力。

准备工作

在开始之前,您需要确保已经安装了以下软件:

  • 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 编写了一个爬虫小程序,可以从网易云音乐网站上爬取歌曲列表并下载歌曲。您可以使用这个小程序来下载您喜欢的歌曲,或者将它集成到您的项目中。