IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Selenium爬取36万条数据告诉你:网易云音乐热评究竟有什么规律? -> 正文阅读

[开发测试]Selenium爬取36万条数据告诉你:网易云音乐热评究竟有什么规律?

网易云音乐火不火我不知道,可是评论很火,之前也见过不少的帖子抓取网易云音乐评论,今天咱们也来试试

图片

这篇文章主要介绍了python selenium爬取网易云音乐热评,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Selenium安装

在此之前我们首先要准备好selenium的配置和安装,如下:

selenium可以直接可以用pip安装。

pip?install?selenium

chromedriver安装

要注意的是chromedriver的版本一定要与Chrome的版本一致,不然就不起作用。

有两个下载地址分别如下:

1、http://chromedriver.storage.googleapis.com/index.html

2、https://npm.taobao.org/mirrors/chromedriver/

当然,你首先需要查看你的Chrome版本,在浏览器中输入

chrome://version?即可查看浏览器版本信息

目标确定

我们可以选择任意自己喜欢的音乐来采集评论,我这里就以 岁月神偷 为例来采集36万+条评论然后来做可视化分析

图片

?

导入所需模块

以下为我们此次爬取网易云热评所需的python库

import?random
from?selenium?import?webdriver
from?icecream?import?ic
import?time
import?csv

目标网址

我们要获取的网易云音乐链接如下,我们要获取的内容有该音乐下的评论作者、评论时间和评论内容

https://music.163.com/#/song?id=28285910

打开浏览器并且加载网页内容

执行如下代码之后会自动跳转到我们所要爬取的网易云音乐页面

网易云音乐相比于其他网站它的内容都嵌套在iframe中,相当于多了一个门。所以我们想要获取到内容必须先要进入到iframe中

图片

#?驱动加载
driver?=?webdriver.Chrome()

#?打开网站
driver.get('https://music.163.com/#/song?id=28285910')

#?等待网页加载完成,不是死等;加载完成即可
driver.implicitly_wait(10)

#?定位iframe
iframe?=?driver.find_element_by_css_selector('.g-iframe')

#?先进入到iframe
driver.switch_to.frame(iframe)

我们要获取评论内容必须要拉到网页最底部才可以完全加载出div标签,这段逻辑我们交由js来实现

#?下拉页面到最底部
js?=?'document.documentElement.scrollTop?=?document.documentElement.scrollHeight'
driver.execute_script(js)

获取网页信息

如上分析,所有评论信息都存在网页对应的div标签之中

所以接下来我们的思路就很清晰,已经进入到了iframe中。接下俩就可以所有的div标签再去提取内部我们所需要的信息

#?获取所有评论列表?div标签
divs?=?driver.find_elements_by_css_selector('.itm')
print(len(divs))

'''
35
'''

第一页是15条热评+20条评论已经成功获取到,下一步提取我们所需要的评论内容

提取网页信息

接下来我们就在div标签中提取我们所需要的信息

咱们再提取的时候如果你会一点点js的话就可以使用id(#),class(.)的方法,

如果你不懂的话直接右键copy xpat或者selector都是可以实现的

for?div?in?divs:
????user_name?=?div.find_element_by_css_selector('.cnt.f-brk?a').text
????hot_cmts?=?div.find_element_by_css_selector('.cnt.f-brk').text.split(':')[1]
????cmts_time?=?div.find_element_by_css_selector('.time.s-fc4').text

????ic(user_name,?hot_cmts,?cmts_time)??
????
'''
ic|?user_name:?'什么事都让我分心'
??? hot_cmts:?'上个月你结婚了,新娘和你很般配,嗯。你从当年的小男生长成了大男孩。亲她的时候,我突然想起高二那个中午,你偷亲我,你不知道的是,其实当时我没有睡着。现在我也有了女朋友,准备明年结婚了,祝彼此幸福。'
????cmts_time:?'2016年4月13日'
ic|?user_name:?'吴繁繁'
??? hot_cmts:?'枕在奶奶腿上听这首歌,奶奶七十多,像个好奇宝宝一样用手指小心地划着我的手机屏幕,看看歌词看看封面,把手机凑近耳朵听。时间是让人猝不及防的东西。'
????cmts_time:?'2015年7月12日'
ic|?user_name:?'jjjkkklllmmm'
??? hot_cmts:?'刚进大学寝室的时候,发现床板上有人用记号笔画了一张请假条,请假原因是毕业,离校时间是6.20,返校时间是永不。?其实老师唯一没骗我们的一句话就是'
????cmts_time:?'2016年5月13日'
ic|?user_name:?'南说哦'
????hot_cmts:?'大家都说我的性子很慢,其实我也可以很快?比如,后面有狗追我?或者,你在前面等我'
????cmts_time:?'2017年5月21日'
ic|?user_name:?'_时光慢点_VI'
??? hot_cmts:?'听歌的时候,旋律永远是第一感觉,然后才是歌词,歌词过后才是细节。
???????????????就像读小说,一开始只对剧情感兴趣,慢慢你开始琢磨小说中的人物,最后才发掘小说的内涵。'
????cmts_time:?'2015年2月9日'
ic|?user_name:?'刘家鑫很蠢'
????hot_cmts:?('逛留言板上看到的一句话?"我对你这么好?你却总这样不冷不热的?可我毫无办法?谁叫一开始主动的人是我?偶尔也会想想?当我终于消失在追逐你的长途里?'
???????????????'某个夜里你的手机微微一震?你会不会恍然地以为?还是我给你的温柔"一个恍惚瞬间戳到泪点。')
????cmts_time:?'2016年4月26日'
'''

数据保存

数据成功提取接下来我们将数据保存在csv中便于后续可视化展示

f?=?open('suiyue.csv',?mode='a',?encoding='utf-8-sig',?newline='')
csv_writer?=?csv.DictWriter(f,?fieldnames=[
????'用户名称',
????'评论时间',
????'评论内容'
])

dit?=?{
????????????'用户名称':?user_name,
????????????'评论时间':?cmts_time,
????????????'评论内容':?hot_cmts
????????}
????????csv_writer.writerow(dit)

图片

多页获取

我们定个小目标,先获取300页数据

for?page?in?range(1,?300+1):
????print(f'-------------正在抓取第{page}页-------------')
????time.sleep(random.random()?*?3)??#?延时防止被反爬
????spider_page()
????#?点击翻页
????driver.find_element_by_css_selector('.znxt').click()

图片

总共获取了3000条测试数据,如果你有时间和兴趣可以获取更多哈

图片

数据处理

接下来就是对数据去重和去空处理了,然后随机抽取五条数据展示如下:

#?读取数据
rcv_data?=?pd.read_csv('./岁月神偷.csv',?encoding='gbk')

#?删除重复记录
rcv_data?=?rcv_data.drop_duplicates()
#?删除缺失值
rcv_data?=?rcv_data.dropna()

#?抽样展示5条数据
print(rcv_data.sample(5))

'''
?????????????????用户名称??????????评论时间???????????????????????????评论内容
153 ??清风不识字何故乱翻书_2027  11月25日 22:21 ?时间是让人猝不及防的东西,我的青春,随着这首歌结束了。。。
1796????????????小花不快乐???9月21日?22:34????????????????????对不起?是对我自己说的
610????????????烟非烟雨亦雨???11月9日?04:23?????????????????????????[多多比耶]
1817????????????气氕氘氚氙???9月21日?11:02?????????????????????????????3Q
1048????????????颜颜柒柒柒??10月21日?00:38??????????????还好嘛,现在是21年10月21日了
'''

词频展示

文章评论出现频率最高的前十个词分别如下:

#?词频设置
all_words?=?[word?for?word?in?result.split('?')?if?len(word)?>?1?and?word?not?in?stop_words]
wordcount?=?Counter(all_words).most_common(10)

'''
('我们',?'时间',?'一个',?'喜欢',?'现在',?'没有',?'真的',?'自己',?'一起',?'知道')
(187,?168,?163,?156,?150,?142,?130,?115,?104,?95)
'''

接下来我们使用气泡图和饼图来直观的展示如下:

图片

图片

词云展示

我们使用结巴分词

最后使用stylecloud绘制漂亮的词云图展示

gen_stylecloud(text=result,
????????????????icon_name='fas?fa-comment',
????????????????font_path='msyh.ttc',
????????????????background_color='white',
????????????????output_name=pic,
????????????????custom_stopwords=stop_words
???????????????????)
????print('词云图绘制成功!')

图片

图片

情感分析

我们将评论分为积极、消极和中等

由图我们可以分析出,大多数评论者的心态还是积极向上的

def?anay_data():
????all_words?=?[word?for?word?in?result.split('?')?if?len(word)?>?1?and?word?not?in?stop_words]
????positibe?=?negtive?=?middle?=?0
????for?i?in?all_words:
????????pingfen?=?SnowNLP(i)
????????if?pingfen.sentiments?>?0.7:
????????????positibe?+=?1
????????elif?pingfen.sentiments?<?0.3:
????????????negtive?+=?1
????????else:
????????????middle?+=?1
????print(positibe,?negtive,?middle)
??
'''
3856?881?11122
'''

图片

好了今天的分析到此结束啦,有问题我们评论区见~~

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 17:03:49  更:2021-12-02 17:05:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:32:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码