(数据分析)网易云热评技巧
本文通过Python爬虫获取了网易云9万条热评,通过数据可视化分析其中的规律,同时分析热评最多的用户特征,从中总结出上热评的技巧。
1.数据抓取
数据集的获取是我们进行数据分析的第一步。现在获取数据的主要途径一般为:现成数据;自己写爬虫去爬取数据;使用现有的爬虫工具爬取所需内容,保存到数据库,或以文件的形式保存到本地。博主用的是现有的数据进行数据分析。
1.1爬取过程
爬取华语歌单列表中所有的歌单url
从每篇歌单地址中爬取每首歌的url
从每首歌的首页爬取热评
先来看一下要爬取的页面
点翻页观察url的变化:
https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%8D%8E%E8%AF%AD&limit=35&offset=0
https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%8D%8E%E8%AF%AD&limit=35&offset=35
https://music.163.com/#/discover/playlist/?order=hot&cat=%E5%8D%8E%E8%AF%AD&limit=35&offset=70
从中可以看出翻页时url只有offset部分发生变化,每次在前一页的基础上加35。通过这个可以设计出爬取歌单的代码。
def get_list():
list_01 = []
url = 'https://music.163.com/discover/playlist/?order=hot&cat=%E5%8D%8E%E8%AF%AD&limit=35&offset={page}'
for page in range(0,1295,35):
url1 = url.format(page = page)
list = []
for i in scrape_index(url1):
i_url = i.attr('href')
'''
网易云歌单API
https://music.163.com/api/playlist/detail?id={歌单ID}
热评获取API
http://music.163.com/api/v1/resource/comments/R_SO_4_{歌曲ID}?limit=20&offset=0
'''
detail_url = f'https://music.163.com/api{i_url.replace("?","/detail?")}'
list.append(detail_url)
list_01.extend(list) # extend 对列表合并
time.sleep(5+random.random())
return list_01
这样我们就可以获得38页每页35篇歌单,共1330篇歌单。
类似的是后面热评的获取,我们也只是需要获取歌曲ID,然后再用网易云的热评API即可获得详细的歌曲热评。
我们只需要获得歌曲的name和id的值即可。
def parse_detail