前言

相信大家都非常喜欢听音乐的吧,每一首歌背后都有一个故事,有爱情,有离别,有仇恨,有不舍等等,听着自己喜欢总会唏嘘,我不仅喜欢听歌,还喜欢看歌曲下面的评论,很多人都阐述了自己对歌曲的看法和理解,除了一些,你懂的..、

废话不多说了。上代码吧(看完吧,代码直接可以用)

首先导入需求库

importjsonimporttimeimportrequests

设置headers信息,模拟成浏览器去访问网站,跳过反爬虫机制

headers={'Host':'music.163.com','User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36'}

创建函数,获取评论信息

defget_comments(page):"""获取评论信息"""url='http://music.163.com/api/v1/resource/comments/R_SO_4_1313354324?limit=20&offset='+str(page)response=requests.get(url=url,headers=headers)#将字符串转为json格式result=json.loads(response.text)items=result['comments']foriteminitems:#用户名user_name=item['user']['nickname'].replace(',',',')#用户IDuser_id=str(item['user']['userId'])#获取用户信息user_message=get_user(user_id)#用户年龄user_age=str(user_message['age'])#用户性别user_gender=str(user_message['gender'])#用户所在地区user_city=str(user_message['city'])#个人介绍user_introduce=user_message['sign'].strip().replace('\n','').replace(',',',')#评论内容comment=item['content'].strip().replace('\n','').replace(',',',')#评论IDcomment_id=str(item['commentId'])#评论点赞数praise=str(item['likedCount'])#评论时间date=time.localtime(int(str(item['time'])[:10]))date=time.strftime("%Y-%m-%d%H:%M:%S",date)print(user_name,user_id,user_age,user_gender,user_city,user_introduce,comment,comment_id,praise,date)withopen('music_comments.csv','a',encoding='utf-8-sig')asf:f.write(user_name+','+user_id+','+user_age+','+user_gender+','+user_city+','+user_introduce+','+comment+','+comment_id+','+praise+','+date+'\n')f.close()

小编推荐一个学python的学习qun 945,8790,25
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

创建函数,获取注册信息

defget_user(user_id):"""获取用户注册时间"""data={}url='https://music.163.com/api/v1/user/detail/'+str(user_id)response=requests.get(url=url,headers=headers)#将字符串转为json格式js=json.loads(response.text)ifjs['code']==200:#性别data['gender']=js['profile']['gender']#年龄ifint(js['profile']['birthday'])<0:data['age']=0else:data['age']=(2018-1970)-(int(js['profile']['birthday'])//(1000*365*24*3600))ifint(data['age'])<0:data['age']=0#城市data['city']=js['profile']['city']#个人介绍data['sign']=js['profile']['signature']else:data['gender']='无'data['age']='无'data['city']='无'data['sign']='无'returndata

创建分页主函数

defmain():#前500页#foriinrange(210000,230000,20):#后500页foriinrange(0,25000,20):print('\n---------------第'+str(i//20+1)+'页---------------')get_comments(i)

执行函数

if__name__=='__main__':main()

哈哈,感觉如何呀?是不是不难的?欢迎大家一起共同学习交流

程序运行结果