Python爬取网易云音乐热门评论

以下是Python爬取网易云音乐热门评论的完整攻略:

1. 确认目标页面

首先需要打开网易云音乐的热门评论页面,例如:https://music.163.com/#/song?id=290192&market=baiduqk

2. 获取评论API地址

在浏览器的开发者工具中,切换到Network标签页,并刷新页面。此时可以在页面响应数据中找到/api/v1/resource/comments/R_SO_4_290192这样的API地址。

3. 发送请求获取数据

使用Python的requests模块,向上一步获取到的API地址发送GET请求,并设置相关参数(如请求头或代理等)。将响应的JSON数据解析成Python对象,即可获取到评论数据。示例代码如下:

import requests

url = 'http://music.163.com/api/v1/resource/comments/R_SO_4_290192'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
proxies = {'http': 'http://127.0.0.1:1080', 'https': 'http://127.0.0.1:1080'}
res = requests.get(url, headers=headers, proxies=proxies)
comments = res.json()['hotComments']

4. 分析数据结构

由于响应数据是JSON格式,可以使用json模块将其解析成Python对象。分析数据结构,找出自己需要的信息,例如:评论的用户昵称和评论内容。示例代码如下:

for comment in comments:
    nickname = comment['user']['nickname']
    content = comment['content']
    print(f'{nickname}: {content}')

此时输出的内容为热门评论中所有用户的昵称和评论内容。

5. 存储数据(可选)

如果需要将爬取到的数据进行存储或分析,可以使用相关的Python库进行处理。例如,可以使用pandas库将数据转换为DataFrame格式,方便后续操作。

import pandas as pd

data = [{'nickname': comment['user']['nickname'], 'content': comment['content']} for comment in comments]
df = pd.DataFrame(data)
df.to_csv('comments.csv', index=False, header=True)

此时将所有热门评论的用户昵称和评论内容保存到comments.csv文件中。

示例说明

示例1:获取指定歌曲的所有热门评论

import requests

def get_hot_comments(song_id):
    url = f'http://music.163.com/api/v1/resource/comments/R_SO_4_{song_id}'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    res = requests.get(url, headers=headers)
    return res.json()['hotComments']

if __name__ == '__main__':
    comments = get_hot_comments(290192)
    for comment in comments:
        nickname = comment['user']['nickname']
        content = comment['content']
        print(f'{nickname}: {content}')

这段代码将获取歌曲ID为290192的所有热门评论。

示例2:获取指定歌手所有歌曲的热门评论

import requests

# 获取指定歌手的所有歌曲信息
def get_artist_songs(artist_id):
    url = f'http://music.163.com/api/v1/artist/{artist_id}?ext=true'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    res = requests.get(url, headers=headers)
    songs = res.json()['hotSongs']
    return [(song['id'], song['name']) for song in songs]

if __name__ == '__main__':
    artist_id = 6452  # 周杰伦的artist_id
    songs = get_artist_songs(artist_id)
    for song_id, song_name in songs:
        comments = get_hot_comments(song_id)
        print(f'歌曲[{song_name}]的热门评论:')
        for comment in comments:
            nickname = comment['user']['nickname']
            content = comment['content']
            print(f'{nickname}: {content}')
        print('\n')

这段代码将获取周杰伦所有歌曲的热门评论。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬取网易云音乐热门评论 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • PHP strripos函数用法总结

    当我们需要在一个字符串中找到子字符串的位置时,可以使用PHP中的strripos()函数。该函数可以忽略大小写,返回子字符串在父字符串中最后一次出现的位置。 下面是该函数的语法: strripos ( string $haystack , string $needle [, int $offset = 0 ] ) : int|false 它需要两个必要的参数…

    PHP 2023年5月26日
    00
  • php三维数组去重(示例代码)

    关于“php三维数组去重(示例代码)”,我来给你详细讲解一下。 什么是三维数组? 在 PHP 中,数组是一种非常常用的数据结构,它可以把一组数据存储在同一个变量中。而二维数组是指数组里元素本身也是数组,也就是一个二维的表格。同理,我们把二维数组里的每一个元素都再次视为数组,那么这个数组就成了一个三维数组。 三维数组去重 假设现在我们有一个三维数组,其中包含了…

    PHP 2023年5月26日
    00
  • php foreach如何跳出两层循环(详解)

    在PHP中,可以使用for、while、do-while等多种循环结构循环遍历数组,但是foreach循环结构相比其他循环结构更加方便简洁。在某些情况下,我们需要从嵌套的foreach循环中跳出,具体细节如下: 使用break 2语句 在foreach循环中,我们可以使用break关键字来跳出当前的循环,但是如果有嵌套的循环,break只能跳出当前的循环。为…

    PHP 2023年5月27日
    00
  • 微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)

    下面是 “微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)” 的完整攻略: 1. 制作搜索框样式 首先,在小程序页面的wxml文件中,可以添加一个input标签,来实现搜索框的样式。一般情况下,搜索框的样式包含一个输入框和一个搜索按钮,可以像下面这样定义: <view class="search-box"> <…

    PHP 2023年5月23日
    00
  • php判断某个方法是否存在函数function_exists (),method_exists()与is_callable()区别与用法解析

    关于php中判断方法或函数是否存在,PHP提供了以下三个函数: function_exists(): 用于判断函数是否存在 method_exists(): 用于判断方法是否存在 is_callable(): 用于判断函数或方法是否可调用 function_exists() function_exists()函数用于判断指定的函数是否被定义。该函数需要传入一…

    PHP 2023年5月26日
    00
  • php实现的生成排列算法示例

    首先,生成排列算法是一种将一组元素重新排列的算法。PHP作为一种流行的Web编程语言之一,能够很方便地实现这个算法。接下来,将详细讲解“PHP实现的生成排列算法示例”的完整攻略,包括两个示例。 示例1:使用PHP内置函数实现生成排列算法 PHP提供了一个内置函数permutations,可以用来轻松地生成排列。此函数接受一个数组作为参数,返回其所有可能的排列…

    PHP 2023年5月26日
    00
  • php数组函数序列之next() – 移动数组内部指针到下一个元素的位置,并返回该元素值

    PHP数组函数之next() 在PHP里有一系列用于操作数组的函数,其中之一是next()函数。本文将详细讲解next()函数的用法及注意点。 概述 next()函数指从当前指针所在位置向后移动一位,并返回该数组元素的值。如果next()的参数是一个空数组或指向数组末尾,则返回false。 语法如下: mixed next ( array &$arr…

    PHP 2023年5月26日
    00
  • php object转数组示例

    下面是“PHP Object 转数组示例”的完整攻略,包括了两条示例说明: 什么是 Object 转数组 在 PHP 中,Object 是一种特殊的数据类型,它包含了多个属性,每个属性都由一个键和一个值组成。Object 转数组是将 Object 中的属性值转换为数组格式的操作。 如何将 Object 转数组 在 PHP 中,可以使用 get_object_…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部