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=