说到爬虫,第一时间可能就会想到网易云音乐的评论。网易云音乐评论里藏了许多宝藏,那么让我们一起学习如何用 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. electron桌面通知,修改默认通知应用名electron.app.Electron为自己应用的名称

    在做electron桌面通知时,按照文档实现弹出通知,但是默认的应用名为electron.app.Electron 解决办法 就是在主进程中设置 app.setAppUserModelId('myAp ...

  2. 用SWPM导入SAP时因用户Culture及系统Locale引发的问题

    [问题]SWPM安装SAP时因用户Culture及系统Locale引发的问题 [现象] ①IE浏览器显示空白(SWPM界面不显示) ②SAP安装时出现“Error occurs when execut ...

  3. async异步改同步后怎么监听错误

    当我们使用readFile()这种api,它第一个参数是报的错误,当使用async.await把它改写成同步,我们可以使用try  { }catch{ }解决.

  4. qtmaind.lib(qtmain_win.obj) : error LNK2019: 无法解析的外部符号 __imp_CommandLineToArgvW,该符号在函数 WinMain 中被引用

    报错:qtmaind.lib(qtmain_win.obj) : error LNK2019: 无法解析的外部符号 __imp_CommandLineToArgvW,该符号在函数 WinMain 中被 ...

  5. HTML标签与属性

    HTML中常用的一些标签和属性. 1.lang属性:搜索引擎      en:英文,  zh:中文 2.meta:元数据     charset属性:字符集编码方式 3.h1~h6:标题   一级标题 ...

  6. javascript中继承方式及优缺点(一)

    分别介绍原型链继承.call/apply继承(借用构造函数继承).组合继承.原型式继承.寄生式继承.寄生组合式继承 1. 原型链继承 核心:将父类的实例作为子类的原型 function SuperTy ...

  7. cogs1619. [HEOI2012]采花 x

    1619. [HEOI2012]采花 ★★☆   输入文件:1flower.in   输出文件:1flower.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 萧薰儿是 ...

  8. js获取iframe里面的dom

    最近在写页面遇到了问题,一个dom好多地方用到,然后我就单独写了个html页面,然后用iframe引入,但是,想获取iframe里面input的value,获取不到input,后面才知道原来js不能直 ...

  9. Unity3D_(API)场景切换SceneManager

    Unity场景切换SceneManager 官方文档:传送门 静态方法 创建场景 CreateScene Create an empty new Scene at runtime with the g ...

  10. JS框架_(Esign.js)仿信用卡电子签名特效

    百度云盘 传送门 密码:l60w 电子签名特效效果: <!DOCTYPE html> <html> <head lang="en"> <m ...