高效自动化网易云爬虫系统,自动寻找未爬取的歌曲、用户进行数据爬取并无限循环,理论上只要时间够就能爬取几乎所有网易云的歌曲和用户信息。笔者用大约24小时的时间就获取了如题的战果。
先展示一下成果:
music.csv存储每首歌的歌曲id、歌名、歌手、专辑、专辑图片url和评论数量信息,部分截图:
comment.csv存储每首歌的热评,包括评论所属歌曲id、评论用户id、评论获赞数、评论内容和评论时间信息。部分截图:
user.csv存储用户信息,包括用户id、昵称、等级、vip类型、生日、所在地区、粉丝数量、头像url等信息。部分截图:
程序设计思路
在开始之前,先隆重介绍一个python库:cloudmusic,这个库可以让网易云爬虫变得十分简单,非常适合大规模爬虫系统的设计,可以节省很多很多代码。官网:http://cloudmusic.cool/
github:https://github.com/p697/cloudmusic
我的思考流程大约是这样:
网易云的的每首歌都有自己独立的id,而只要获得了歌曲id就可以通过网易的各种api接口获取歌曲的相关数据。那么如何获取歌曲id就成为了关键。
假如我们只需要爬单个歌曲的信息,就用 Get Lucky 这首歌为例。首先我们去网易云官网找到Get Lucky这首歌的歌曲id,再借助python的cloudmusic库,只要这么写即可:
import cloudmusic
music = cloudmusic.getMusic(26349642)
# 不会从网易云官网获取某首歌的id,请自行百度
print("歌曲名称:{}".format(music.name))
print("歌手:{}".format(music.artist))
ccount = music.getCommentsCount()
print("评论数量:{}".format(ccount