python爬取网易云音乐_Python项目实战:爬取网易云音乐评论

前言

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

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

首先导入需求库

import jsonimport timeimport requests

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

headers = { 'Host': 'music.163.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64)

AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}

创建函数,获取评论信息

def get_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'] for item in items: # 用户名

user_name = item['user']['nickname'].replace(',', ',') # 用户ID

user_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(',', ',') # 评论ID

comment_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) with open('music_comments.csv', 'a', encoding='utf-8-sig') as f:

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

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

webp

创建函数,获取注册信息

def get_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) if js['code'] == 200: # 性别

data['gender'] = js['profile']['gender'] # 年龄

if int(js['profile']['birthday']) < 0:

data['age'] = 0

else:

data['age'] = (2018 - 1970) - (int(js['profile']['birthday']) // (1000 * 365 * 24 * 3600)) if int(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'] = '无'

return data

创建分页主函数

def main():

# 前500页

# for i in range(210000, 230000, 20):

# 后500页

for i in range(0, 25000, 20):

print('\n---------------第 ' + str(i // 20 + 1) + ' 页---------------')

get_comments(i)

执行函数

if __name__ == '__main__':

main()

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

程序运行结果

webp

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值