原文作者:猪哥(毕业于燕京理工学院)第六届蓝桥杯大赛JAVA软件开发大学C组参赛选手

小蓝有话说:

这几天在网上寻找好文章,连续两次联系的作者都是蓝桥杯大赛曾经的参赛选手,不是刻意,而是蓝桥杯大赛经过十年已经承载起了这份行业的荣耀,真正做到了遍地开花。

特等奖只有一个,这些如今在行业中不懈奋斗的人,在蓝桥杯大赛的赛场上未必光芒万丈。其实,比赛的一时输赢并不重要,重要的是,比赛为每个人带来的意义。

图为小蓝与本文作者的对话

蓝桥杯大赛的选手们都太棒啦!!如果你也有很棒的原创技术文章,可以联系小蓝进行发布。

小蓝承诺:开白转载绝不盗用!

我是正文的分割线

前段时间为“周杰伦打榜”话题迅速登上微博热搜榜因为cxk的粉丝们质疑周杰伦微博没有数据(周杰伦没有开通微博)于是,无数隐匿江湖多年看不下去的周杰伦老年粉开始被迫营业于是一场周杰伦中老年粉VS蔡徐坤铁军微博打榜大战拉响为听了那么多年的周杰伦粉丝们纷纷拉下老脸和00后的微博饭圈小年轻们从零学习如何做数据

一、需求背景

iKun们都说周杰伦的粉丝是夕阳红老年团今天我们就用他们说的数据,来实力打脸,让iKun们看看周杰伦的粉丝们到底是不是中老年粉!

二、功能描述

用爬虫爬取#周杰伦超话#下的微博,然后再爬取他们的个人主页信息,获取年龄、地区、性别等信息,然后用数据分析,再可视化呈现!

注意:文中说的微博个人主页信息均为微博公开信息,不包含任何隐私信息,同时全文中将不会出现任何人的个人信息,信息仅用于学习分析,任何人不得使用此教程用作商用,违者后果自负!

三、技术方案

我们大概分解下技术步骤,以及使用的技术

  1. 爬取#周杰伦超话#下的微博
  2. 根据每条微博爬取该用户基本信息
  3. 将信息保存到csv文件
  4. 使用数据分析用户年龄、性别分布
  5. 分析粉丝团的地区分布
  6. 使用词云分析打榜微博内容

爬取数据我们可以使用requests库,保存csv文件我们可以使用内置库csv,而可视化数据分析这次给大家介绍一个超级好用的库pyecharts,技术选型好了之后我们就可以开始技术实现了!

四、爬取超话微博

1.找到超话加载数据URL

我们在谷歌浏览器(chrome)中找到#周杰伦超话#页面,然后调出调试窗口,改为手机模式,然后过滤请求,只查看异步请求,查看返回数据格式,找到微博内容所在!微博请求链接:https://m.weibo.cn/api/container/getIndex?jumpfrom=weibocom&containerid=1008087a8941058aaf4df5147042ce104568da_-_feed

2.代码模拟请求数据

拿到链接我们就可以模拟请求,这里我们还是使用我们熟悉的requests库。简单几句便可以获取微博

3.提取微博内容

我们可以看到返回的数据是一个json格式的,我们一层一层寻找,就可以找到微博内容、用户id所在!了解微博返回的数据结构之后我们就可以将微博内容和id提取出来啦

4.批量爬取微博

在我们提取一条微博之后,我们便可以批量爬取微博啦,如何批量?当然是要分页了?那如何分页,这里猪哥再教大家一遍寻找分页参数技巧:

查找分页参数技巧:比较第一次和第二次请求url,看看有何不同,找出不同的参数!给大家推荐一款文本比较工具:Beyond Compare

比较两次请求的URL发现,第二次比第一次请求链接中多了一个:since_id参数,而这个since_id参数就是每条微博的id!

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

了解微博分页机制之后,我们就可以制定我们的分页策略:我们将上一次请求返回的微博中最小的since_id作为下次请求的参数,这样就等于根据时间倒序分页抓取数据然后写一个for循环调用上面那个方法就可以啦

# 批量爬取for i in range(1000):        print('第%d页' % (i + 1))        spider_topic()

五、爬取用户信息

批量爬取微博搞定之后,我们就可以开始爬取用户信息啦!首先我们得了解,用户基本信息页面的链接为:https://weibo.cn/用户id/info,我们以某喜欢唱、跳、rap还有篮球的同学主页为例子!所以我们只要获取到用户的id就可以拿到他的公开基本信息!

1.获取用户id

回顾我们之前分析的微博数据格式,发现其中便有我们需要的用户id!所以我们在提取微博内容的时候可以顺便将用户id提取出来!

2.模拟登录

我们获取到用户id之后,只要请求https://weibo.cn/用户id/info 这个url就可以获取公开信息了,但是查看别人用户主页是需要登录的,那我们就先用代码模拟登录!我们之前爬取豆瓣的时候,已经教过大家如何模拟登录了,这里就直接放出代码!登录我们使用的是requests.Session()对象,这个对象会自动保存cookies,下次请求自动带上cookies!

3.爬取用户公开信息

拿到用户id又登录之后,就可以开始爬取用户公开信息啦!这里公开信息我们只要:用户名、性别、地区、生日这些数据!所以我们需要将这几个数据提取出来!爬取用户信息不能过于频繁,否则会出现请求失败(响应状态码=418),但是不会封你的ip,其实很多大厂 不太会轻易的封ip,太容易误伤了,也许一封就是一个小区甚至更大!

六、保存csv文件

微博信息拿到了、用户信息也拿到了,那我们就把这些数据保存起来,方便后面做数据分析!我们之前一直是保存txt格式的,因为之前都是只有一项数据,而这次是多项数据(微博内容、用户名、地区、年龄、性别等),所以选择CSV(Comma Separated Values逗号分隔值)格式的文件!我们生成一个列表,然后将数据按顺序放入,再写入csv文件!看看生成的csv文件,注意csv如果用wps或excel打开可能会乱码,因为我们写入文件用utf-8编码,而wps或excel只能打开gbk编码的文件,你可以用一般的文本编辑器即可,pycharm也可以!

七、数据分析

数据保存下来之后我们就可以进行数据分析了,首先我们要知道我们需要分析哪些数据?

  1. 我们可以将性别数据做生成饼图,简单直观
  2. 将年龄数据作出柱状图,方便对比,看看到底是不是夕阳红老年团
  3. 将地区做成中国热力图,看看哪个地区粉丝最活跃
  4. 最后将微博内容做成词云图,直观了解大家在说啥

1.读取csv文件列

因为我们保存的数据格式为:’用户id’, ‘用户名’, ‘性别’, ‘地区’, ‘生日’, ‘微博id’, ‘微博内容’,的很多行,而现在做数据分析需要获取指定的某一列,比如:性别列,所以我们需要封装一个方法用来读取指定的列!这里猪哥还使用了Counter类来统计词频,方便后面数据分析,他返回的格式为:{‘女’: 1062, ‘男’: 637}。

2.可视化库pyecharts

在我们分析之前,有一件很重要的事情,那就是选择一个合适可视化库!大家都知道Python可视化库非常多,之前我们一直在用matplotlib库做词云,matplotlib做一些简单的绘图非常方便。但是今天我们需要做一个全国分布图,所以经过猪哥对比筛选,选择了国人开发的pyecharts库。选择这个库的理由是:开源免费、文档详细、图形丰富、代码简介,用着就是一个字:爽!

  • 官网:https://pyecharts.org/#/

  • 源码:https://github.com/pyecharts/pyecharts

  • 安装:pip install pyecharts

po一张他们的官方文档图片这里有非常详细的例子,直接复制过来就可以运行得到图片!

3.分析性别

选择了可视化库之后,我们就来使用吧!这里说下为什么生成的是html?因为这是动态图,就是可以点击选择显示的,非常人性化!执行之后会生成一个gender.html文件,在浏览器打开就可以!效果图中可以看到,在打榜的粉丝中女性多于男性,女性占比大概为62%!

4.分析年龄

这一项是大家比较关心的,真的是夕阳红粉丝团吗?上图中我们发现为周杰伦打榜的主力军为:90后!

5.地区分析

下面我们来看看打榜粉丝全国各省的分布情况!上图中我们可以看到打榜最多的三个省(直辖市)依次为:广东、北京、上海

6.打榜内容分析

我们来看看这些打榜的粉丝们都在说什么!上图分析出现一些有趣的词:营业、老年人、奶茶!看来打榜粉丝们都自认为自己是老年人,哈哈哈!

八、总结

从结果来讲为周杰伦打榜的粉丝主力军还是80、90后,毕竟曾经的青春啊,而且女生要比男生多,打榜粉丝最多的地区为广东!从技术分析今天这个例子有不少的新东西,了解新浪微博分页机制、爬取用户公开信息、使用csv库保存文件、使用pyecharts做数据可视化!当然中间遇到了很多问题,只有自己亲自尝试才会知道,猪哥已经把源码放在github(https://github.com/pig6/sina_topic_spider ),感兴趣的同学记得有时间的时候尝尝鲜!【完】


好文章那么多,千万别走散了

进入蓝桥微官网,技术干货

wps分析工具库如何加载_分析为周杰伦打榜的夕阳红老年团,告诉你他们真实年龄!...相关推荐

  1. python微博涨粉_爬取微博用户公开信息,分析为周杰伦打榜的夕阳红老年团,告诉你他们真实年龄!...

    前段时间为"周杰伦打榜"话题迅速登上微博热搜榜 因为cxk的粉丝们质疑周杰伦微博没有数据 (周杰伦没有开通微博) 于是,无数隐匿江湖多年 看不下去的周杰伦老年粉开始被迫营业 于是一 ...

  2. 爬取微博用户公开信息,分析为周杰伦打榜的夕阳红老年团,告诉你他们真实年龄!...

    前段时间为"周杰伦打榜"话题迅速登上微博热搜榜 因为cxk的粉丝们质疑周杰伦微博没有数据 (周杰伦没有开通微博) 于是,无数隐匿江湖多年 看不下去的周杰伦老年粉开始被迫营业 于是一 ...

  3. wps分析工具库如何加载_亚马逊卖家如何通过库存加载工具表格删除SKU(一)

    如何处理一个sku对应两个asin的系统bug(01) 最近遇到了一个sku对应了两个asin的问题,通过客服查询,客服那边是看不到多余的asin的.比如 sku 本来是对应 asin01 但是在库存 ...

  4. wps分析工具库如何加载_关键词数据分析到底如何做?用这个工具比指数好

    近期比较多的运营伙伴们问我:经常用百度指数.阿里指数.关键词工具等做关键词分析,但都不理想,且不知道如何分析.传统的数据报告都有,但从哪些维度去形成关键词数据报告?老板天天问我推广这么久为什么没效果, ...

  5. wps分析工具库如何加载_【数据分析】关键词数据分析如何做?用这个工具比指数好...

    关键词数据分析到底如何做?用这个工具比指数好 近期比较多的运营伙伴们问我:经常用百度指数.阿里指数.关键词工具等做关键词分析,但都不理想,且不知道如何分析.传统的数据报告都有,但不知道从哪些维度去形成 ...

  6. wps2019数据分析加载项_《07版office办公软件中的excle中,为什么在加载项里选择了分析工具库,数据分析还是显示不出来?》 wps数据分析加载项...

    如何利用excle做数据分析 excel完全可以解决! 可以通过数据透视表,筛选出你的各种需求,但是要求操作要熟练,没办法在这里描述清楚的 07版office办公软件中的excle中,为什么在加载项里 ...

  7. 嵌入式系统串口解析二进制数_嵌入式系统Bootloader分析及DSP56F800串口加载功能实现...

    嵌入式系统 Bootloader 分析及 DSP56F800 串口加载功 能实现 张小平 ; 谷勇 ; 丰新龙 [期刊名称] <海军航空工程学院学报> [年 ( 卷 ), 期] 2010( ...

  8. wpsppt加载项在哪里_《wps表格加载项在哪里》 WPS版的EXCEL中 加载宏和数据分析在哪?...

    wps表格里的查找功能在哪? 以WPS 2019版本为例: 可以在工具栏中单击"查找"功能哦. WPS中的excel表格将字段分组在哪 我在wps表格中了一个关于成绩的表格面我们来 ...

  9. wpsppt加载项在哪里_wpsppt加载项在哪里_《wps表格加载项在哪里》 WPS版的EXCEL中 加载宏和数据分析在哪?......

    wps表格里的查找功能在哪? 以WPS 2019版本为例: 可以在工具栏中单击"查找"功能哦. WPS中的excel表格将字段分组在哪 我在wps表格中了一个关于成绩的表格面我们来 ...

  10. [解决方案]excel2010分析工具库无法运行“ FUNCRES.NLAM! Showatpdialog”宏

    问题描述: 2010版excel32位,加载过分析工具库后,运行出现如下异常 无法运行" FUNCRES.NLAM! Showatpdialog""宏.可能是因为该宏在此 ...

最新文章

  1. 美通信与动力公司向WIN-T军事通信计划提供支持
  2. 《python 与数据挖掘 》一 1.2 工具简介
  3. [CSS]30种时尚的CSS网站导航条
  4. CodeChef--EQUAKE
  5. Makefile中关于shell 语句使用的注意事项
  6. ArrayList和LinkedList的add(E)性能秘密
  7. CircleLoss测试
  8. EOS入门指南PART6——别忙着开发,先来看看智能合约数据是怎么存的
  9. VTK:相互作用之PickableOff
  10. android ios web兼容,js与android iOS 交互兼容
  11. Method Tracking
  12. 第五六周机电传动控制作业
  13. 适配器和绑定 没找到_亚马逊如何收款?附亚马逊收款绑定流程
  14. 精述IBM的MQTT协议和MQTT-S协议
  15. 用JS判断不同分辨率调用不同的CSS样式文件
  16. go 302不记录cookie_gin pprof 记录日常操作
  17. 北航|北京航空航天大学|介绍|简介
  18. python爬虫破解大众点评的字体加密
  19. 什么是P=NP问题?
  20. python爬虫beautifulsoup爬当当网_利用python爬虫可视化分析当当网的图书数据!

热门文章

  1. C++执行shell命令
  2. JAVA调用百度OCR实现身份证识别
  3. 网站短信验证码接口收费标准
  4. 计算机组成原理课后答案蒋本,计算机组成原理习题答案(蒋本珊).doc
  5. 激光点云数据编辑处理(一)——CloudCompare
  6. Shiro的详细简介解释(快速搭建官网解释代码)
  7. 2021年焊工作业压力焊考试题库
  8. Vensim学习之Random Normal函数的使用
  9. 传染病模型系统动力学VENSIM模拟
  10. ArcGIS Pro中的回归分析浅析(下)地理加权回归工具(GWR)使用小结