这个夏天,除了世界杯,还有101

上周六,创造101的小姐姐们终于成团,11个被粉丝选中的火箭少女即将一飞冲天。

python抢演唱会的票 爬虫抢演唱会票_Python

打破土偶多项数据记录的土创终于出人头地,成为2018年夏天最受人关注的选秀。选手中成功出圈的王菊,成功一个努力的炮灰,未能成功出道;而另一位备受争议的“村花”杨超越,点赞数高居第三,顺利成团。

python抢演唱会的票 爬虫抢演唱会票_Python_02

从第一期开始,“村花”几乎被全网diss,微博随便一搜关键词“diss”自动联想全是杨超越的名字。

python抢演唱会的票 爬虫抢演唱会票_Python_03

王思聪更是实名diss:Ycy的出道是侮辱了其他十个人。侮辱了她们的努力,她们的汗水,她们的业务能力。

python抢演唱会的票 爬虫抢演唱会票_python爬虫抢演唱会_04

某的公众号上公开表示杨超越现象“让努力的女孩子看起来像个笑话。”

python抢演唱会的票 爬虫抢演唱会票_词云_05

那么这个在舞台上表演各种“车祸现场”的妹子,究竟用什么打动了粉丝从而高位出道呢?某论坛有网友用Python爬取了杨超越的微博数据,进行词云分析,终于发现了真正原因!

一、准备工具

作词云分析主要用到两个工具:

jieba,俗称结巴,中文分词工具;

wordcloud,词云生成工具。

可以先用pip安装这两个库。

二、分析

首先打开移动端 https://m.weibo.cn/searchs,在里边找到小姐姐的微博主页,分析浏览器的请求。

python抢演唱会的票 爬虫抢演唱会票_词云_06

新浪微博应用的是Ajax渲染方式,因此若要准确分析数据需要提取出Ajax请求,Ajax的请求类型为XHR,如图getIndex前缀的都是Ajax请求,查看其Request URL, 观察到获取微博数据的的接口是 https://m.weibo.cn/api/container/getIndex。仔细观察这个URL参数:

python抢演唱会的票 爬虫抢演唱会票_词云_07

发现其中有一些固定参数在不同请求中是恒定不变的,同时也有一些加密参数,page是翻页参数。在response选项卡中查看这个借口返回的数据,发现是JSON字典类型,在JSON.cn中进行在线转化:

python抢演唱会的票 爬虫抢演唱会票_python爬虫抢演唱会_08

python抢演唱会的票 爬虫抢演唱会票_词云_09

total是微博总条数,page是页数,每10条微博为一页,每一条微博都被封装在cards数组中,具体内容在text标签里。

三、构造请求头

分析完网页,我们用requests模拟浏览器来获取数据,因为不需要登陆就可以查看小姐姐的微博,因此这里不需要准备cookies。应用以上分析得到的参数构建请求头:

python抢演唱会的票 爬虫抢演唱会票_Python_10

四、构造简单爬虫

通过返回的数据能查询到总微博条数 total,爬取数据直接利用 requests 提供的方法把 json 数据转换成 Python 字典对象,从中提取出所有的 text 字段的值并放到 blogs 列表中,提取文本之前进行简单过滤,去掉无用信息。顺便把数据写入文件,方便下次转换时不再重复爬取。

同时,在这里准备一个由常见连接词组成的“结巴关键语录”,里边存放“你、我、他、虽然、但是”等连接词,用这个语录对微博语句进行断句。

同时,准备好词云背景图,这个背景图除了图案背景最好是白色。

通过hsl函数来决定生成词云的颜色。

python抢演唱会的票 爬虫抢演唱会票_Python_11

五、效果图

python抢演唱会的票 爬虫抢演唱会票_python爬虫抢演唱会_12

六、原始代码

python抢演唱会的票 爬虫抢演唱会票_Python_13

python抢演唱会的票 爬虫抢演唱会票_python抢演唱会的票_14

python抢演唱会的票 爬虫抢演唱会票_Python_15

这个结果也是如大家所料,”好看“成为提及较多的关键词,“村花”果然依靠自己出众的颜值,收获大批颜粉!

不过话说回来,之前也有小哥哥用Python爬了菊姐的微博评论,通过词云图得出陶渊明们的用户画像。所以,大家在收看综艺愉悦身心的同时,可以实战演练一番,也是颇有趣味的哦~

python抢演唱会的票 爬虫抢演唱会票_python抢演唱会的票_16