当前位置: 首页 > news >正文

七夕过后,我依然单身,于是我用Python爬了你们单身的原因

前两天偶然在微博看到这样的一个关于520,七夕,情人节等等的普法教育。。。!相信前几天的七夕很多小仙女都收到了来自对方的爱意!

可是还有很多伙伴连发红包的机会都没有。。。

我就是这类,没收到爱意,也没机会送出爱意的这类!我也不知道我为什么还单着!哈哈哈,我想知道,这么多单着的人,你们单着是因为什么!爬虫!爬虫!爬虫!

大家说说,单着的这么多人,有分析过为什么如此优秀的你却还是单身呢?

一、需求背景

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

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

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

我倒觉得这三个原因都似乎并不合理,难道单身的原因难道不是因为穷吗?哭唧唧。。。

二、功能描述

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

三、技术方案

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

四、模拟登录

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

五、爬取话题

1.找到话题加载数据url

https://m.weibo.cn/api/container/getIndex?containerid=100103type%3D61%26q%3D%2390%E5%90%8E%E5%8D%95%E8%BA%AB%E5%8E%9F%E5%9B%A0TOP3%23%26t%3D0&isnewpage=1&extparam=pos%3D41%26c_type%3D31%26realpos%3D40%26flag%3D0%26filter_type%3Drealtimehot%26cate%3D0%26display_time%3D1565179797&luicode=10000011&lfid=106003type%3D25%26t%3D3%26disable_hot%3D1%26filter_type%3Drealtimehot&page_type=searchall

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://juejin.im/post/5d5226a5f265da03eb13be21

相关文章:

  • NOIP 模拟19
  • GIT上传失败,报错信息:HTTP 413 curl 22 The requested URL returned error: 413
  • vscode——如何对MarkDown文件进行预览
  • VirtualEvn+jupyter
  • hibernate8
  • 如何成为一名专家级的开发人员
  • NOIP 模拟22
  • gitlab搭建与基本使用【转】
  • GoLand——配置goproxy.io代理
  • NOIP模拟26
  • 2019HDU多校 Round9
  • NOIP模拟27(命悬一线)
  • [Invalid postback or callback argument]昨晚调试程序时出现的问题,MARK一下
  • 口头语——反映人的性格
  • 条件注释的两种形式——下层隐藏与下层显示
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • [Vue CLI 3] 配置解析之 css.extract
  • 【翻译】babel对TC39装饰器草案的实现
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Docker: 容器互访的三种方式
  • JAVA SE 6 GC调优笔记
  • Java方法详解
  • Laravel 实践之路: 数据库迁移与数据填充
  • Python 基础起步 (十) 什么叫函数?
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SwizzleMethod 黑魔法
  • Web Storage相关
  • Yii源码解读-服务定位器(Service Locator)
  • 让你的分享飞起来——极光推出社会化分享组件
  • 三栏布局总结
  • 使用common-codec进行md5加密
  • 算法---两个栈实现一个队列
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微服务框架lagom
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • python最赚钱的4个方向,你最心动的是哪个?
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​ArcGIS Pro 如何批量删除字段
  • #NOIP 2014# day.2 T2 寻找道路
  • (13):Silverlight 2 数据与通信之WebRequest
  • (2)MFC+openGL单文档框架glFrame
  • (39)STM32——FLASH闪存
  • (C语言)二分查找 超详细
  • (js)循环条件满足时终止循环
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (四)鸿鹄云架构一服务注册中心
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (轉)JSON.stringify 语法实例讲解
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .Net 应用中使用dot trace进行性能诊断
  • .netcore 获取appsettings