说到爬虫,第一时间可能就会想到网易云音乐的评论。网易云音乐评论里藏了许多宝藏,那么让我们一起学习如何用 python 挖宝藏吧!

既然是宝藏,肯定是用要用钥匙加密的。打开 Chrome 分析 Headers 如下。

这参数看起来挺复杂的,我们就不用 requests 去调用这个链接了。

这次使用的是 selenium ! 一个浏览器自动化测试框架!通过它可以模拟手动操作浏览器!

为此我们要准备好驱动器 chromedriver 和 chrome 浏览器。

chromedriver 可以在淘宝镜像中下载,选择与 chrome 浏览器对应的版本进行下载。下载地址如下。

http://npm.taobao.org/mirrors/chromedriver

整个项目使用了 python3 与一些第三方库。参考如下。

from selenium import webdriver
import jieba
from wordcloud import WordCloud
from PIL import Image
import numpy as np

然后配置 config.json

{
"id":"1336789644",
"page": 200,
"useCache": true,
"font_path": "SimHei.ttf",
"mask": "mask.png",
"chromedriver": "chromedriver"
}

运行 sound.py 就会生成词云图。

以及所有的评论数据

看了使用方法,接下来进入分析环节!

找到网易云音乐的地址并发现规律,并使用 webdriver 打开!

driver = webdriver.Chrome(CONFIG['chromedriver'])
driver.get(f'https://music.163.com/#/song?id={SOUND_ID}')

接着让 driver 跳入到评论框的 frame 里。

driver.switch_to.frame('g_iframe')

为何这么做?因为在 frame 结构里无法用 xpath 解析到。而评论数据正好在这个 iframe 中。

选中其中一个评论,分析其格式结构,可以看到都是在同一个 class 名内。

编写对应的 xpath ,得到所有的评论列表。

element_list = driver.find_elements_by_xpath('//div[@class="cnt f-brk"]')

选择下一页按钮,分析其格式结构,可以看到 class 名是以一个前缀为开头的。

编写对应的 xpath ,得到下一页按钮,并在需要的时候模拟点击。

next_button = driver.find_element_by_xpath('//a[starts-with(@class,"zbtn znxt js-n-")]')
driver.execute_script('arguments[0].click();', next_button)

数据分析结束后,该生成结果喽。

将评论列表保存为 json。

with open(filePath,'w') as f:
json.dump(comments_list,f, ensure_ascii=False, indent=4)

使用 jieba 分词和 wordcloud 生成词云图。

# 词云处理
image_mask = np.array(Image.open(CONFIG['mask']))
wordlist = jieba.cut(';'.join(comments_list))
wordcloud = WordCloud(font_path=CONFIG['font_path'], background_color='white', mask=image_mask, scale=1.5).generate(' '.join(wordlist))
# 保存图
wordcloud.to_file(f'./result/{SOUND_ID}-{PAGES}.png')

以上就是使用 selenium 爬取网易云音乐评论的整个步骤喽!


本文仅供个人学习交流使用,请勿用于其他用途!


完整代码

参考资料

爬取网易云音乐评论!python 爬虫入门实战(六)selenium 入门!的更多相关文章

  1. python爬虫+词云图,爬取网易云音乐评论

    又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...

  2. python爬虫:了解JS加密爬取网易云音乐

    python爬虫:了解JS加密爬取网易云音乐 前言 大家好,我是"持之以恒_liu",之所以起这个名字,就是希望我自己无论做什么事,只要一开始选择了,那么就要坚持到底,不管结果如何 ...

  3. 如何用Python网络爬虫爬取网易云音乐歌曲

    今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将网易云歌词抓取下来已经不再话下了,在抓取歌词的时候在函数中传入了歌手ID和歌曲名两 ...

  4. python网络爬虫&&爬取网易云音乐

    #爬取网易云音乐 url="https://music.163.com/discover/toplist" #歌单连接地址 url2 = 'http://music.163.com ...

  5. 用Python爬取网易云音乐热评

    用Python爬取网易云音乐热评 本文旨在记录Python爬虫实例:网易云热评下载 由于是从零开始,本文内容借鉴于各种网络资源,如有侵权请告知作者. 要看懂本文,需要具备一点点网络相关知识.不过没有关 ...

  6. Python爬取网易云音乐歌手歌曲和歌单

    仅供学习参考 Python爬取网易云音乐网易云音乐歌手歌曲和歌单,并下载到本地 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做 ...

  7. python爬取网易云音乐歌曲评论信息

    网易云音乐是广大网友喜闻乐见的音乐平台,区别于别的音乐平台的最大特点,除了“它比我还懂我的音乐喜好”.“小清新的界面设计”就是它独有的评论区了——————各种故事汇,各种金句频出.我们可以透过歌曲的评 ...

  8. Python爬虫——request实例:爬取网易云音乐华语男歌手top10歌曲

    requests是python的一个HTTP客户端库,跟urllib,urllib2类似,但比那两个要简洁的多,至于request库的用法, 推荐一篇不错的博文:https://cuiqingcai. ...

  9. python3爬虫应用--爬取网易云音乐(两种办法)

    一.需求 好久没有碰爬虫了,竟不知道从何入手.偶然看到一篇知乎的评论(https://www.zhihu.com/question/20799742/answer/99491808),一时兴起就也照葫 ...

随机推荐

  1. 语法注释格式;格式化输出;input在py2和py3中的区别;数据的基本类型;运算符;

    一.Python中的注释 Python的注释是代码的评论,是让代码让人能更加清晰明确.代码的注释可分为单行注释和多行注释,单行注释用“#”,多行注释用三对单引号或者三对双引号来表示. ps:# 单行注 ...

  2. JavaScript 的定时(Timing )事件——setTimeout()与setInterval()

    JavaScript 可以在时间间隔内执行,这就是所谓的定时事件( Timing Events). ㈠Timing 事件 ⑴window 对象允许以指定的时间间隔执行代码,这些时间间隔称为定时事件. ...

  3. 在vue中如何安装使用Vant

    ---恢复内容开始--- Vant中文文档地址:https://youzan.github.io/vant-weapp 1.创建Vue项目之后,运行安装命令:13:47:04 npm i vant - ...

  4. PyCharm中Qt Designer+PyUIC配置

    本文环境配置: 系统=>windows10:64位 语言=>Python:3.7.1 第三方库PyQT5:5.11.3pyqt5-tools:5.11.3.1.4 工具=>PyCha ...

  5. js获取页面的各种高度与宽度

    document.body.scrollTop等属性可以获取页面滚动距离等,但是此类属性在xhtml标准网页或者更简单的说是带<!DOCTYPE ..>标签的页面里得到的结果是0, 所以一 ...

  6. 微信小程序_(组件)组件基础

    (progress.text.block) 组件基础效果 官方文档:传送门 Page({ /** * 页面的初始数据 */ data: { text:"Gary 微信小程序\n", ...

  7. ssm框架文件配置

    1 简介 Spring MVC (web level),采取 MVC 架构,意图取代麻烦的 Servlet 写法,简化 web 层 MyBatis (dao level),意图取代 jdbc 操作数据 ...

  8. C++入门经典-例4.7-变量的作用域

    1:代码如下: // 4.7.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  9. 【JVM】jstack和dump线程分析(2)

    一:jstack jstack命令的语法格式: jstack  <pid>.可以用jps查看java进程id.这里要注意的是:1. 不同的 JAVA虚机的线程 DUMP的创建方法和文件格式 ...

  10. Charles 功能介绍说明和使用教程

    https://juejin.im/post/5b8350b96fb9a019d9246c4c http://blog.devtang.com/2015/11/14/charles-introduct ...