事情是这样的,同事小A说他最近微博涨粉老快了,但是自己还是和以前一样就偶尔发发动态,看看新闻吃吃瓜,也没买啥涨粉包之类的。

小A说这话的时候稍显淡定,但是小一清楚的看到小A的嘴角微微上扬,不禁撇了撇嘴。

可能是以为我不信他最近涨粉老快这件事,小A随后发来了这张图:

好家伙,他总共粉丝才几百人,这七天就涨了一百多,微博涨粉这么容易的?

要不我也换个阵地试试?这速度比小一现在的公众号涨粉快多了。【撇嘴】

这个时候小A又补了一句:“这只是近七天的,之前一周的更多呢!“说完这话,小A就转过身去了。

这家伙在炫耀!绝对是!

话说微博小一也有在玩,但是确实很少涨粉,粉丝基本都是一些认识的朋友,除非是:

僵尸粉!

其实小A也怀疑自己突然多的粉丝可能是僵尸粉,但是一个一个去检查似乎有点浪费时间。

于是在小A的请求下便有了下面的故事

强烈建议下面步骤在征得同事的同意下进行,不然可能会被打

获取粉丝数据

小一之前也写过微博的爬虫,大概爬了几十万条的土味情话和一些gif图,所以大概知道获取微博粉丝列表应该这样做:

  • 获取用户的总粉丝数,计算运行次数
  • 解析每页的粉丝列表,获取粉丝数据
  • 通过粉丝uid构造粉丝主页链接url
  • 爬取粉丝的详细数据

要检测粉丝到底是不是僵尸粉,可以通过粉丝的粉丝数量、微博动态数这些数据

但是好像不够全面,所以在上面第④步小一获取每个粉丝的详细数据,例如简介、签名、性别等,其中最重要的是获取到该粉丝最近一次的发博情况。

这里面会用到两个链接,一个是微博用户主页信息的链接,一个是粉丝翻页链接,分别如下:

用户主页信息url:

url_master = "https://m.weibo.cn/profile/info?uid=" + uid

粉丝翻页url:

url_fans = "https://m.weibo.cn/api/container/getIndex?containerid=231051_-_fans_-_{0}&since_id={1}".format(uid, index)

注意:

uid是微博中每个用户默认的id唯一编号,我用的是小A的uid,在他的微博主页拿到的。

翻页的时候因为是一页默认20个粉丝,所以index应该是0、20、40这样子的

流程不难,篇幅有点多,所以就不贴具体的实现函数了,你可以在后台回复“微博粉丝”获取所有源码

大致的主函数代码如下:

if __name__ == '__main__':uid = '用户uid'"""获取详情数据"""master_info = get_master_info(uids=uid)print("用户id:{0},发博数:{1},关注{2}人,拥有粉丝{3}人".format(uid, master_info['statuses_count'], master_info['follow_count'], master_info['followers_count']))"""设置最大页数"""fans_count = master_info['followers_count']# 由于当page大于250时就已经无法得到内容了,所以要设置最大页数为250max_page = fans_count//20 + 1 if fans_count < 5000 else 250# 爬取数据fans_data = pd.DataFrame()for i in range(max_page):index = i*20url_fans = "https://m.weibo.cn/api/container/getIndex?containerid=231051_-_fans_-_{0}&since_id={1}".format(uid, index)data_per_page = get_page_info(url_fans, i)fans_data = fans_data.append(data_per_page)sleep(3)fans_data.to_csv('weibo_{0}_fans_1.csv'.format(uid), encoding='gbk', index=False)"""爬取每个粉丝的详情数据"""for fans in fans_data.iterrows():fans_url = "https://m.weibo.cn/profile/info?uid=" + str(fans[1]['用户id'])fan_info = get_fans_info(fans_url)# 获取并更新每个粉丝最近的一条微博动态fans_data.loc[fans_data['用户id'] == fans[1]['用户id'], '总动态数'] = fan_info['statuses_count']fans_data.loc[fans_data['用户id'] == fans[1]['用户id'], '最近一次发博日期'] = fan_info['created_at']fans_data.loc[fans_data['用户id'] == fans[1]['用户id'], '最近一次发博内容'] = fan_info['text']fans_data.loc[fans_data['用户id'] == fans[1]['用户id'], '最近一次发博终端'] = fan_info['source']fans_data.loc[fans_data['用户id'] == fans[1]['用户id'], '签名'] = fan_info['description']fans_data.loc[fans_data['用户id'] == fans[1]['用户id'], '性别'] = fan_info['gender']sleep(3)# 保存数据fans_data.to_csv('weibo_{0}_fans.csv'.format(uid), encoding='utf-8', index=False)

分析粉丝数据

按理说显示一个人有多少粉丝就能获取多少个,但是实际上并不是。

上面代码的运行截图如下

可以看到,有的页面粉丝数不足20人,可最终获取到小A共348个粉丝信息。

因为小A是从最近开始疯狂涨粉,所以通过分析粉丝列表小一发现粉丝最近一次发博情况似乎出现了断层

因为最近一次发博为空证明没有发过微博(或者设置不可见),而且通过粉丝数也可以看到只有个位数的粉丝,并且大部分的微博动态数为个位数,应该是我们要找的僵尸粉。

所以小A的粉丝中红框下面的都是正常粉丝,上面的极有可能是这段时间的涨粉造成的。

ok,那大概可以确定上面这两百多个粉丝就是我们要分析的对象。

注意:下面提到的“问题粉丝”就是我们筛选出来的首要分析对象

首先看下他们的粉丝数分布

拥有1个粉丝的问题粉丝占比61.62%,我记得微博刚注册“新手指南”会默认关注你,不会这122个问题粉丝都是刚注册的?

再看下问题粉丝的发微博数量

119个问题粉丝从来没有发过微博,占总问题粉丝的58.6%,这部分问题粉丝应该是真的有问题了

接下来,我们从问题粉丝中筛选发博数大于0的粉丝进行分析,究竟他们是不是也有问题?

首先,从他们的性别来分析:

性别分布很均匀,似乎也看不出什么问题。

看一下发博用户的最后一次微博是什么时候发的:

可以看到,最早的是2013年,wtf?上一次发博竟然是6年前?这老僵尸了吧。

然后可以看到在很多粉丝的上一条微博是在今年的11月更新的,似乎又不像是僵尸粉。

再来看一下发博粉丝的发博内容:

找到问题了,其中有35%的是广告推销,其中不乏有像双十一、领红包、直播间推荐等各种推销用于;另外有18%的是转发别人的,只有不到一半的可能会是正常微博。

既然是正常粉丝,那也应该是有粉丝的,看一下发博粉丝的粉丝分布:

果然,粉丝数大于个位数的发博粉丝占比不到一半。

最后,通过筛选上一次发博是在近一年、发博内容不是广告和转发、粉丝数大于10的发博粉丝,最终,筛选出来了4个粉丝

近两百个新增粉丝中,只有4…4…4个人是真粉!

看到这个结果小A面色阴沉,真实的数据摆在眼前,原来自己近期涨的粉丝99%都是僵尸粉

“果然,天上掉馅饼肯定是有原因的,因为这馅饼,就不是真正的馅饼!”

说完这话,小A甩手仰天长啸而去。

写在后面的话

本故事不是虚构,但是你可以当个故事来看

最后小一哥为了安慰小A受伤的心灵,决心和他一起找出涨粉的源头所在

最后,小A在他的私信里面发现了这个:

如果你微博也有收到这个提醒,那,请你注意,一大波僵尸粉即将袭来

请一定保护好自己即将受伤的心灵

最后,本节爬取粉丝信息的源码已经整理完毕,可以在文末原文链接中获取。

我是小一,坚持向暮光所走的人,终将成为耀眼的存在。

期待你的三连,我们下节见。

原创不易,欢迎点赞噢

文章首发:公众号【小一的学习笔记】

原文链接:同事微博涨粉200+,一顿分析真爱粉只有4个??

爬取了同事的微博粉丝,结果发现300+涨粉中,真爱粉只有4个!相关推荐

  1. 微博内容爬取——陈一发儿微博实例

    引言 利用Ajax分析微博并爬取其内容如微博内容,点赞数,转发数,评论数等. 分析 打开陈一发微博网站:https://m.weibo.cn/p/1005051054009064,并同时打开开发者工具 ...

  2. 为了分析最近热点电影的观众爱好取向,爬取《镇魂》微博评论数据

    爬取<镇魂>微博数据 本文皆在于通过爬虫方式爬取微博镇魂. 编程语言:python2.7 依赖库:requests 系统环境:windows *本篇文章主要参考自Denise_hzf的博客 ...

  3. python写图片爬取软件_python制作微博图片爬取工具

    有小半个月没有发博客了,因为一直在研究python的GUI,买了一本书学习了一些基础,用我所学做了我的第一款GUI--微博图片爬取工具.本软件源代码已经放在了博客中,另外软件已经打包好上传到网盘中以供 ...

  4. Python爬虫【二】爬取PC网页版“微博辟谣”账号内容(selenium同步单线程)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  5. Python爬虫【四】爬取PC网页版“微博辟谣”账号内容(selenium多线程异步处理多页面)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  6. Python爬虫【三】爬取PC网页版“微博辟谣”账号内容(selenium单页面内多线程爬取内容)

    专题系列导引   爬虫课题描述可见: Python爬虫[零]课题介绍 – 对"微博辟谣"账号的历史微博进行数据采集   课题解决方法: 微博移动版爬虫 Python爬虫[一]爬取移 ...

  7. 实用Python是如何爬取英雄联盟(lol)全部皮肤,涨知识了

    实用Python是如何爬取英雄联盟(lol)全部皮肤,涨知识了 小三:"怎么了小二?一副无精打采的样子!" 小二:"唉!别提了,还不是最近又接触了一个叫英雄联盟的游戏,游 ...

  8. 利用八爪鱼爬取关键词搜索的微博数据

    写在开头 今天是我在CSDN上的两周年创作纪念日,两年里我写了不少有意思的文章,虽然没收获什么粉丝,但看到自己的博客阅读量越来越大,能帮助到更多人解决实际问题还是很开心的.今天就分享一下我最近做的一个 ...

  9. python爬取微博数据词云_爬虫篇:使用Python动态爬取某大V微博,再用词云分析...

    这是我用大V冯大辉老师最近5000多条微博内容做的词云,大家可以围观一下. 之前也写了一篇用python 来爬取朋友的QQ说说,大家也可以围观一下 好了,开始进入正题:#coding:utf-8 &q ...

最新文章

  1. 3D车道线检测:Gen-LaneNet
  2. App上架应用市场,如何攻破安全过检难题
  3. LNMP--Nginx的日志切割
  4. 【算法】Tween算法
  5. VS可视化调试学习总结
  6. python关键字匹配_关于python:在遇到某个关键字后匹配值的正则表达式
  7. 【机器学习基础】深入理解Logistic Loss与回归树
  8. LeetCode 142 环形链表 II
  9. 基于vue2.0 + elementUI 后台管理平台
  10. 7-1 ATM机类结构设计(一) (100 分)
  11. maya 白天室内灯光_Maya+Arnold常用灯光详解!
  12. 中山大学2018年数学分析高等代数考研试题
  13. A.457 - Linear Cellular Automata
  14. 高级商务办公软件应用【5】
  15. 掌握这几个 Java 性能调优技巧,95%的面试必问的Java性能调优知识点,
  16. 模块化机房建设指导书_模块化机房建设方案
  17. 解析Hl7消息,将消息可视化
  18. AndroidX(1)androidx.core.core:1.0.0解析
  19. virtualbox虚机无法上网
  20. 用python读取YUV文件 转RGB 8bit/10bit通用

热门文章

  1. Linux驱动3:驱动模块加载与卸载
  2. 同城配送平台,用户下单商家送,自给自足不“求人”
  3. 5g网速用什么软件测试手机,5G时代到底有多快?测速软件谁最靠谱?
  4. 三种家用媒体服务器emby的搭建比较
  5. ecplise使用android模拟器,Eclipse使用BlueStacks作为android模拟器
  6. 淘宝内容营销的时代到来,卖家们该如何决策?
  7. win10 安装c语言无法启动,如何解决win10应用程序无法正常启动0xc0000018的问题
  8. weblogic 登录控制台页面很慢
  9. 组件-Element---Input(输入框)
  10. 远程控制软件Aspia详细教程