python爬虫之爬取网易云音乐的歌曲图片和歌词

本文介绍如何使用Python爬取网易云音乐歌单中的歌曲图片和歌词。通过分析页面结构,获取歌曲ID,然后提取歌曲信息、图片URL和歌词内容。文章详细讲述了遇到的/#问题及其解决方法,以及如何处理无歌词的情况。最后提供了完整代码示例。
摘要由CSDN通过智能技术生成

0.目录

1.分析页面
2.获取歌曲的id
3.获取歌曲信息
4.获取歌曲图片url
5.获取歌词
6.总结
7.完整代码

1.分析页面

这一次我们来爬取网易云音乐,爬取歌单内的所有歌曲的图片和歌词,最终的结果是我们只要输入歌单的id,我们就可以直接下载歌单内所有歌曲的图片和歌词,并且以自己想要的命名格式统一命名。
在这里插入图片描述
上图是这次的演示歌单,id为973185551。每个歌曲也是有对应的id,通过右键检查第一首歌曲,可以发现这首歌的id为1370008169。

在这里插入图片描述
进入歌曲页面,检查图片,会发现图片的url与id是看不出有一点关系的,也就是我们只能进入到歌曲的页面才能获得图片的url。

2.获取歌曲的id

注意:想要爬取真正的页面信息,必须将原url中的 /# 删除,否则无法通过url得到正确的源代码。
原本的歌单url:https://music.163.com/#/playlist?id=973185551
更改后的url:https://music.163.com/playlist?id=973185551

# encoding: utf-8

import requests
import re
import os
import json

# 获取网页源代码
def get_page(url):
    headers = {
   
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'
    }
    response = requests.get(url, headers=headers)
    return response.text

# 获得歌曲ID
def get_id(url_list):
    text = get_page(url_list)
    ids = re.findall(r'<li><a href=".*?id=(\d+)">.*?</a></li>', text, re.DOTALL)
    return ids


def main():
    url = 'https://music.163.com/playlist?id=973185551' # 歌单url
    ids = get_id(url)
    for id in ids:
        print(id)


if __name__ == '__main__':
    main()

运行的部分结果:
在这里插入图片描述
我们可以发现,我们已经提取出了歌单里所有歌的id。

3.歌曲信息

同样的,我们想要得到网页源代码,就必须将 /# 去掉,变为:
view-source:https://music.163.com/song?id=1370008169
在这里插入图片描述
我们可以直接获取meta下的信息

<meta name="description" content="歌曲名《归寻》,由 等什么君 演唱,收录于《归寻》专辑中。《归寻》下载,《归寻》在线试听,更多相关歌曲推荐尽在网易云音乐" />
# 获取歌曲名
def get_name(url_song):
    text = get_page(url_song)
    song_name = re.findall(r'<meta name="description" content=
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值