爬取周杰伦新歌《说好不哭》的所有评论,然后生成词云图

183 阅读3分钟
原文链接: zhuanlan.zhihu.com

前两天

周杰伦发了新歌


说好不哭


顿时间就刷屏了



周杰伦

是一个时代的符号

是我们的青春



早些天

小帅b听周杰伦的歌

还湿润了眼眶了呢







那时候我们唱 k

周董的歌是必点的


他的电影《不能说的秘密》就刷了好几遍


这次的新歌MV 很 nice 啊






特别是里面的女主

上网搜了一下她的照片







小帅b瞬间就爱了啊


刚看了下qq音乐的评论






2500+ 的评论小帅b不禁好奇


这些评论都在说写什么呢


要不然就把它们爬下来

搞个词云图看看吧


接下来就是学习 python 的正确姿势



首先我们来分析一下这个网页



打开控制面板







我们点击下一页

发起请求






发现了一个 comment 的请求

点击进去







咦~这不就是评论的数据嘛


再具体看下 json 数据

原来评论的数据是被封装到 comment 对象下的commentlist 数组了







再来看看是怎么请求的吧

点击 Headers






哇靠请求链接这么长



看看请求参数






看来看去

主要就 pagenum 和 lasthostcommentid 在变


pagenum 一看就是页码

请求第一页的 pagenum 是 0

第二页是 1


lasthostcommentid则是上一页请求的最后一条评论id






用 Python 来模拟请求一下吧



前方高能


这么多请求参数

我可不想一个键值一个键值的复制粘贴


复制一下 cURL








然后打开我之前说的



postman






点击 Import 按钮

接着选择Past Raw Text


然后

把刚刚复制的 cURL 粘贴进去






点击 Import







点击 Send






可以看到评论数据返回了


接下来骚操作了点击 Code






此时会出现一个面板

选择

Python Requests







直接一键生成

Python请求代码







太太太太TM爽了



有了这么方便的请求代码爬取数据到 txt 文件不是

so easy 么


简单撸下代码把评论数据都爬下来



先直接把刚才生成的请求代码复制过来






创建一个文件用来存放评论数据






来个 for 循环请求每一页的数据









在每一次请求的时候

还要拿到最后一条评论的 id

作为下次请求的参数









我们知道

评论数据被封装在 json 数组里面

所以可以循环获取一下然后写到文件里面去


不过有些评论数据含有表情啥的

需要把它们顺便给替换掉










写完之后把文件给关了









跑一下吧









完事之后 jay.txt 就有所有的评论了








有了数据之后

咱们就可以生成词云了


准备个字体文件







准备张背景颜色图片








打开









因为中文

结巴分词整起







接着就可以使用

wordcloud 搞事情了









最后我们使用

pyplot 来 show 一下吧








运行一波

词云出来







可以看到

说好不哭假面骑士

出现的频率最高



假面骑士说得是 mv 里的男主

其中的“自己”、“努力”、“人生”

也是能量满满



小帅b

谨以此篇

致敬周杰伦

以及我们的青春



下回见

peace




扫一扫

学习 Python 没烦恼