乐趣区

七夕过后你分析过自己单身原因的原因吗

昨天的朋友圈都在丧心病狂的秀恩爱,秀 520 红包!于是就有人出来普法教育。。。

可是很多老铁连发红包的机会都没有。。。

为什么这么多如此优秀的同学都还是单身呢?

一、需求背景

今天逛微博的时候发现一个有趣的话题 #90 后单身原因 TOP3#

七夕之际,一份针对全国 90 后青年婚恋观进行抽样调查公布了结果。结果显示,一线城市单身占比持续领先。90 后单身原因 TOP3:圈子小、工作忙、对爱情幻想过于完美

单身的三大原因:圈子小、工作忙、对爱情幻想过于完美!

猪哥觉得这三个原因都并不合理,难道单身的原因难道不是因为穷吗?

二、功能描述

好奇这个调查是怎么来的?真实性有待考证,刚好这几天我们也学习了如何爬取微博话题,今天就来验证一下为何如此优秀却依然单身!

三、技术方案

  1. 模拟登录微博
  2. 爬取话题
  3. 保存文件
  4. 数据清洗
  5. 数据分析

四、模拟登录

模拟登录之前讲爬取 # 周杰伦超话 # 的时候已经讲过了,这里就不再重复,直接贴出代码!

五、爬取话题

1. 找到话题加载数据 url


https://m.weibo.cn/api/contai…

2. 代码模拟请求数据

我们依然使用 requests 库 来爬取数据,这次猪哥在请求的时候增加了一个参数:timeout,这样做是为了防止请求某个一直没有应答导致堵死其他请求!

3. 提取微博内容

要想提取微博内容就需要了解请求返回的数据格式

了解数据格式之后我们就可以写代码提取我们想要的微博内容啦!

上图我们已经拿到微博内容,但是还有很多网页标签,我们来用正则将网页标签去掉,和开头的话题开头!

4. 保存文件

微博内容提取出来之后,我们将他们保存起来!

六、批量爬取

批量爬取就涉及分页,上次我们将周杰伦超话时,它的分页机制是:

微博超话分页机制:根据时间分页,每一条微博都有一个 since_id,时间越大的 since_id 越大所以在请求时将 since_id 传入,则会加载对应话题下比此 since_id 小的微博,然后又重新获取最小 since_id 将最小 since_id 传入,依次请求,这样便实现分页

那这个话题的分页机制也是这样的吗?我们来对比一下第一次请求于第二次请求的 url

我们发现普通话题的分页机制竟然是 page 的形式,看来微博对不同级别的话题有不同的分页机制!

page 形式的分页机制,之前我们讲了很多个案例,直接 for 循环传入 i,而这个 i 就当作 page 就可以啦!

七、数据分析

数据分析我们采用 pyecharts 库,这是一个非常好用的可视化分析库!

先读取数据,然后使用 jieba 库进行分词和数据清洗,最后使用 pyecharts 库 做展示!

之前调查结果显示单身的三大原因是:圈子小、工作忙、对爱情幻想过于完美。在我们数据分析得出的结果好像确实如此!

之前说大家单身的原因是因为穷,看来只有猪哥穷!

源码地址:https://github.com/pig6/weibo…

退出移动版