风萧萧兮易水寒

Python听说网易云音乐的评论很有意思

前言

听歌哪个平台好不知道, 但是要说评论,那就是网易云音乐。
看看云音乐热歌榜所有歌曲的评论吧。

分析

其实重点是分析各个页面和接口, 只要分析到位,没有拿不到的信息。

代码

其中headersdata 的信息自己从浏览器拿一下就好了.

# -*- 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群输入歌名,直接返回最热的一条评论!

坚持原创技术分享,您的支持将鼓励我继续创作!