Python爬取网易云歌曲评论数
Python爬取网易云歌曲评论数
使用Python的selenium模块爬取网易云歌手热门歌曲的评论数,并对其进行简单分析。
目录
导入相关模块
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 Ways | 306459 |
吴亦凡 | 大碗宽面 | 301267 |
5.3 按歌手分类评论量在10万以上的歌曲数量
从数据库上来看,薛之谦、华晨宇、毛不易、摩登兄弟刘宇宁、尤长靖、周深、许嵩等人的歌曲在网易云还是很受欢迎的
歌手名 | 歌曲数 |
薛之谦 | 33 |
华晨宇 | 28 |
毛不易 | 23 |
摩登兄弟刘宇宁 | 20 |
尤长靖 | 17 |
周深 | 11 |
许嵩 | 9 |
李荣浩 | 8 |
蔡徐坤 | 7 |
隔壁老樊 | 7 |
王嘉尔 | 6 |
Lil Ghost小鬼 | 5 |
林俊杰 | 5 |
陈奕迅 | 5 |
徐秉龙 | 4 |
赵雷 | 4 |
朱星杰 | 3 |
沈以诚 | 3 |
CMJ | 2 |
刘大壮 | 2 |
吴亦凡 | 2 |
周兴哲 | 2 |
奇然 | 2 |
小咪 | 2 |
张国荣 | 2 |
杨宗纬 | 2 |
汪苏泷 | 2 |
沈谧仁 | 2 |
王一博 | 2 |
白小白 | 2 |
羽肿 | 2 |
肖战 | 2 |
许巍 | 2 |
邵帅 | 2 |
郭顶 | 2 |
阿冗 | 2 |
陈鸿宇 | 2 |
马良 | 2 |
黄明昊 (Justin) | 2 |