您的当前位置:官网首页 > 新闻动态 > 团队活动 >

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手

时间:2019-10-19

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手

翻页并观察它的url变化,注意下方动图,每次翻页末尾变化35。

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手

采用requests+pyquery来爬取

def get_list: list1 = [] for i in range: url = 'https://music.163.com/discover/playlist/?order=hot cat=%E5%8D%8E%E8%AF%AD limit=35 offset='+str print) data = [] html = restaurant doc = pq for i in range: # 一页35个歌单 a = doc +')   div   a').attr a1 = 'https://music.163.com/api' + a.replace data.append list1.extend time.sleep) return list1 

这样我们就可以获得38页每页35篇歌单,共1300+篇歌单。

下面我们需要进入每篇歌单爬取所有歌曲url,并且要注意最后 去重 ,不同歌单可能包含同一首歌曲。

点开一篇歌单,注意红色圈出的id。

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手

观察一下,我们要在每篇歌单下方获取的信息也就是红框圈出的这些,利用刚刚爬取到的歌单id和云音乐的api可以构造出:

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手

不方便看的话我们解析一下json。

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手
def get_playlist: data = [] doc = get_json obj=json.loads jobs=obj['result']['tracks'] for job in jobs: dic = {} dic['name']=jsonpath.jsonpath[0] #歌曲名称 dic['id']=jsonpath.jsonpath[0] #歌曲ID data.append return data 

这样我们就获取了所有歌单下的歌曲,记得去重。

#去重 data = data.drop_duplicates 

剩下就是获取每首歌曲的热评了,与前面获取歌曲类似,也是根据api构造,很容易就找到了。

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手
def get_comments: data = [] doc = get_json obj=json.loads jobs=obj['hotComments'] for job in jobs: dic = {} dic['content']=jsonpath.jsonpath[0] dic['time']= stampToTime[0]) dic['userId']=jsonpath.jsonpath[0] #用户ID dic['nickname']=jsonpath.jsonpath[0]#用户名 dic['likedCount']=jsonpath.jsonpath[0] dic['name']= k data.append return data 

汇总后就获得了44万条音乐热评数据。

Python爬虫44万条数据揭秘:如何成为音乐评论区的网红段子手

数据分析

清洗填充一下。

def data_cleaning: cols = data.columns for col in cols: if data[col].dtype == 'object': data[col].fillna else: data[col].fillna return 

Copyright © 2018 凯发网址娱乐凯发网址娱乐-凯发网娱乐下载 All Rights Reserved