Python爬取网易云歌曲评论数

Python爬取网易云歌曲评论数

使用Python的selenium模块爬取网易云歌手热门歌曲的评论数,并对其进行简单分析。

目录

Python爬取网易云歌曲评论数

1.获取歌手类型

2.分类获取歌手清单

3.获取歌手的热门歌曲

4.获取热门歌曲评论数

5.简单分析

5.1 评论量在100万以上歌曲

5.2 评论量在30万以上的歌曲

5.3 按歌手分类评论量在10万以上的歌曲数量



导入相关模块

from selenium import webdriver
import csv
from time import sleep
import time
import requests

环境初始化

#0.变量定义
init_url = 'https://music.163.com/#/discover/artist'
songertypepath = 'D:\\WorkSpace\\python\\file\\songertype.csv'

#1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口
driver=webdriver.Chrome(executable_path="C:/Users/lx/AppData/Local/Google/Chrome/Application/chromedriver.exe")

1.获取歌手类型

从网易云音乐歌手主页,获取歌手分类和对应的URL

def getSongerType(url):
    '获取歌手分类列表url'
    urllist = {}
    driver.get(url)
    driver.switch_to_frame("contentFrame")
    sleep(0.5)
    type1list = driver.find_elements_by_class_name("blk")
    for type2 in type1list:
        type2list = type2.find_elements_by_class_name("cat-flag")
        for type3 in type2list:
            urllist.update({type3.text:type3.get_attribute("href")})
    #print(urllist)
    return urllist

2.分类获取歌手清单

根据第一步获取的歌手分类的url获取歌手清单

def getTagSonger(url):
    '获取歌手分类列表tag的url a b c'
    urllist = []
    driver.get(url)
    driver.switch_to_frame("contentFrame")
    sleep(0.5)
    tag1list =  driver.find_element_by_id("initial-selector").find_elements_by_xpath("li")
    #print(len(tag1list))
    for tmp in tag1list:
        tmpurl = tmp.find_elements_by_xpath('a')
        if tmpurl[0].text=='热门':
            continue
        urllist.append(tmpurl[0].get_attribute("href"))
    #print(urllist)
    return urllist

def getSonger(url,songerlist):
    '获取歌手的url'
    driver.get(url)
    driver.switch_to_frame("contentFrame")
    sleep(0.5)
    songer1list =  driver.find_elements_by_class_name("s-fc0") 
    for tmp in songer1list:
        songerlist.update({tmp.get_attribute("href"):tmp.text})

3.获取歌手的热门歌曲

根据第二步获取到的歌手的URL,获取歌手的热门歌曲的URL

def getSong(url,songlist,songername):
    '获取歌曲的url'
    driver.get(url)
    driver.switch_to_frame("contentFrame")
    sleep(0.5)
    song1list = driver.find_elements_by_xpath('//*[@class="f-cb"]/div/div/span/a')
    for tmp in song1list:
        tmplist = [tmp.get_attribute("href"),tmp.find_element_by_xpath('b').get_attribute("title"),songername]
        songlist.append(tmplist)

4.获取热门歌曲评论数

根据获取到歌曲的URL,获取歌曲的评论数据

def getSongCommentCnt(url,commentcntlist):
    '获取歌曲的评论数'
    driver.get(url[0])
    sleep(0.7)
    try:
        driver.switch_to_frame("contentFrame")   
    except Exception as msg:
        print(msg)    
        print("contentFrame")   
        return
    try:
        commentcnt = driver.find_element_by_id('cnt_comment_count').text
        tmplist = [url[2],url[1],commentcnt]
        commentcntlist.append(tmplist)
    except Exception as msg:
        print(msg)
        print(url[0])

5.简单分析

以下数据截至2021年3月底,只统计了华语男歌手的数据;

5.1 评论量在100万以上歌曲

肖战是真的火

 

歌手名歌曲名评论数
许嵩雅俗共赏2571343
Shang断线1798836
肖战红梅赞1117661
肖战满足1014505

 

5.2 评论量在30万以上的歌曲

歌手名歌曲名评论数
三亩地城南花已开723103
郭顶水星记647725
Pianoboy高至豪The truth that you leave - (你离开的事实)622719
赵紫骅可乐587427
张紫豪可不可以479938
陈鸿宇理想三旬461828
薛之谦天外来物441175
赵雷成都427374
柏松世间美好与你环环相扣425597
王一博无感408859
华晨宇好想爱这个世界啊 (Live)396666
薛之谦暧昧394919
Ayo97感谢你曾来过378546
广东雨神广东十年爱情故事374516
en嚣张374228
小咪我走后372643
李荣浩年少有为354356
刘大壮会不会(吉他版)351371
马雨阳盗将行350879
陈奕迅我们 - (电影《后来的我们》主题曲)336520
华晨宇与火星的孩子对话336300
隔壁老樊多想在平庸的生活拥抱你334445
AR(刘夫阳)皇帝的新衣 (Skr)332716
艾辰错位时空325553
华晨宇烟火里的尘埃322865
永彬Ryan.B再也没有320831
CMJ所念皆星河315962
王嘉尔100 Ways306459
吴亦凡大碗宽面301267

 

5.3 按歌手分类评论量在10万以上的歌曲数量

从数据库上来看,薛之谦、华晨宇、毛不易、摩登兄弟刘宇宁、尤长靖、周深、许嵩等人的歌曲在网易云还是很受欢迎的
 

歌手名歌曲数
薛之谦33
华晨宇28
毛不易23
摩登兄弟刘宇宁20
尤长靖17
周深11
许嵩9
李荣浩8
蔡徐坤7
隔壁老樊7
王嘉尔6
Lil Ghost小鬼5
林俊杰5
陈奕迅5
徐秉龙4
赵雷4
朱星杰3
沈以诚3
CMJ2
刘大壮2
吴亦凡2
周兴哲2
奇然2
小咪2
张国荣2
杨宗纬2
汪苏泷2
沈谧仁2
王一博2
白小白2
羽肿2
肖战2
许巍2
邵帅2
郭顶2
阿冗2
陈鸿宇2
马良2
黄明昊 (Justin)2
posted @ 2021-04-08 14:48  lxpaopao  阅读(450)  评论(0编辑  收藏  举报