Python听说网易云音乐的评论很有意思
原创大约 2 分钟
听歌哪个平台好不知道, 但是要说评论,那就是网易云音乐。 看看云音乐热歌榜所有歌曲的评论吧。
前言
听歌哪个平台好不知道, 但是要说评论,那就是网易云音乐。 看看云音乐热歌榜所有歌曲的评论吧。
分析
其实重点是分析各个页面和接口, 只要分析到位,没有拿不到的信息。
代码
其中headers和data 的信息自己从浏览器拿一下就好了.
# -*- coding: utf-8 -*-#
# -------------------------------------------------------
# Name: Music163
# Description: 获取网易云音乐精彩评论
# Author: GMaya
# Date: 2020/4/5 21:45
# -------------------------------------------------------
import requests, re, json, datetime
# 1.创建会话对象
session = requests.session()
headers = {
'User-Agent': 'xxx'}
data = {
"params": "xxx"
,
"encSecKey": "xxx"}
# 文件保存位置
file = 'D:\download\music163.txt'
# 根据歌曲id 获取所有精彩评论
def get_music_comment(songid):
url = "https://music.163.com/weapi/v1/resource/comments/R_SO_4_%d?csrf_token=" % songid
result = session.post(url, headers=headers, data=data)
res = json.loads(result.text)
hotComments = res.get('hotComments')
for hot in hotComments:
# 热评内容
content = hot.get('content').replace('\n', '')
# 昵称
nickname = hot.get('user').get('nickname')
# 评论时间
hottime = int(hot.get('time')) / 1000
hottime = datetime.datetime.fromtimestamp(hottime).strftime('%Y-%m-%d %H:%M:%S')
# 点赞人数
likedCount = hot.get('likedCount')
consequence = '[昵称:]%s,[评论时间:]%s,[点赞人数:]%d,[热评内容:]%s' % (nickname, hottime, likedCount, content)
# 保存评论信息
with open(file, 'a+', encoding='utf-8') as f:
f.write(consequence + '\n') # 加\n换行显示
# 获取热歌排行榜所有歌曲id
def get_song():
url = "https://music.163.com/m/discover/toplist?id=3778678"
result = session.get(url, headers=headers)
res = """<ul class="f-hide">(.*?)</ul>"""
resul = re.findall(res, result.text)
print(resul)
for ress in resul:
res2 = """<li><a href="\/song\?id=(.*?)">(.*?)</a></li>"""
resul2 = re.findall(res2, ress)
# print(resul2)
for r in resul2:
songid = int(r[0])
songname = r[1]
print("开始下载[%s]歌曲评论" % songname)
consequence = '===========歌曲名称: %s===============' % songname
with open(file, 'a+', encoding='utf-8') as f:
f.write(consequence + '\n') # 加\n换行显示
# 开始下载评论
get_music_comment(songid)
if __name__ == '__main__':
get_song()
最后文件是保存到本地磁盘, 还是数据库,根据自己的方式决定
思路: 我之前写过获取qq音乐分享链接可以根据歌名 获得到歌曲id等链接, 这个网易云根据歌名获取歌曲id也不难,这个时候应该可以做一个对接qq或者微信的机器人, 用户在qq群输入歌名,直接返回最热的一条评论!