其他分享
首页 > 其他分享> > 重磅内幕!2020年CSDN的博客之星的粉丝曝光了

重磅内幕!2020年CSDN的博客之星的粉丝曝光了

作者:互联网

一年一度的博客之星活动正开展的如火如荼,由于博主也有幸进入200名的候选,因此在各个群里也不时轰炸各位CSDN博友,被打扰的亲见谅了。周末活动就结束了,哈哈。
这次活动参与了多少人呢?大佬们的粉丝团到底是啥样的呢?现在让我们起底下各位大佬的粉丝们去。

拉票太难了!大家有余票的,支持下我啊支持点我投票

1、数据采集

经简单分析,CSDN官方并没有做任何限制,因此分析很简单,这里不再赘述。

我们直接访问
https://bss.csdn.net/m/topic/blog_star2020/getRanking 就可以获取每个爱豆的粉丝数。不过这个接口是个分页接口,不能够一把拉取所有的粉丝数,因为CSDN数据统计的原因,会非常慢,因此我们就按每页50条、100条的拉取即可。
写个并发拉取的c#程序,可以快速拉取并入库数据了。

 var stars = rss.AllStar(); 
  var list = new List<Task>();
  for (int i = 0; i < stars.Count; i++)
  {
      Console.WriteLine($"start {stars[i].Nick_Name}====================");
      list.Add( rss.GetAllFans(stars[i].UserName));     
  }
  Task.WaitAll(list.ToArray());

public async Task<List<Blogger>> GetAllFans(string username)
{
     var list = new  List<Blogger>();
     //设定每个人最多7000粉丝,这个有可能第一名会超,他粉丝太多太多了,哦哦哦
     for (int i = 1 ; i < 70; i++)
     {
         var rt = await GetFans(username,  i);
         if (rt == null) break;
         rt.ForEach(x => x.Star = username);
         list.AddRange(rt);

         Console.WriteLine($"acquire {username}'s fans {rt.Count}");                       
     }

    
     InsertData(list);
     Console.WriteLine($"End {username}====================");
     return list;
 }
public async Task<List<Blogger>> GetFans(string username,int page)
 {
      var client = HttpclientFactory.CreateClient("csdn");
      var req = new StringContent($"username={username}&page={page}&pageSize=100");           
      req.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");             
      var response = await client.PostAsync($"m/topic/blog_star2020/getRanking", req);
      var content = await response.Content.ReadAsStringAsync();
      var fanInfo = JsonConvert.DeserializeObject<RtnFanInfo>(content);
      if(fanInfo.Data != "[]")
      {
          var list = JsonConvert.DeserializeObject<List<Blogger>>(fanInfo.Data);
          return list;
      }
      else
      {
          return null;
      }            

  }

2、建表入库

利用mysql存储数据,这里需要注意的是,csdn的用户名是包含表情字符的,因此需要使用utf8mb4进行存储。

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for starfan2
-- ----------------------------
DROP TABLE IF EXISTS `starfan2`;
CREATE TABLE `starfan2`  (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `star` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `nick_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `level` int(255) NULL DEFAULT NULL,
  `codelevel` int(255) NULL DEFAULT NULL,
  `votenum` int(11) NULL DEFAULT NULL,
  `starname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 55321 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

3、活动参与人数

截止到01月20日的11点,统计参与的粉丝人数合计:26094。2万6千人的狂欢啊,粉丝的热情还是很高的。

# 统计去重的粉丝总量
select  count(distinct username) from starfan2;

4、拥有很多票的粉丝

哈哈,这里曝光下拥有很多票的粉丝,候选人们赶快动手去挖墙角去啊。

select nick_name,CONCAT('https://blog.csdn.net/',max(username)) username, max(votenum) as vts from starfan2  group by nick_name  order by vts desc limit 20;
金主爸爸博客已投票
谷哥的小弟https://blog.csdn.net/lfdfhl130
一叶飘舟https://blog.csdn.net/jdsjlzx130
beyondmahttps://blog.csdn.net/BEYONDMA126
herosunlyhttps://blog.csdn.net/herosunly120
文宇肃然https://blog.csdn.net/wenyusuran120
谙忆https://blog.csdn.net/qq_26525215119
vv_小虫https://blog.csdn.net/vv_bug118
ConstXionghttps://blog.csdn.net/meism5117
铁锚https://blog.csdn.net/renfufei117
AI之禅https://blog.csdn.net/weixin_32393347110
_陈哈哈https://blog.csdn.net/qq_39390545110
白水baishuihttps://blog.csdn.net/baishuiniyaonulia110
carl-zhaohttps://blog.csdn.net/u012410733108
AlbertShttps://blog.csdn.net/shihengzhen101108
Sahadev_https://blog.csdn.net/u011064099108
671coderhttps://blog.csdn.net/liuqiyao_01108
恬静的小魔龙https://blog.csdn.net/q764424567108
小山猪的沙塔https://blog.csdn.net/u012039040108
简简单单OnlineZuozuohttps://blog.csdn.net/qq_15071263108
Trent1985https://blog.csdn.net/Trent1985106

5、前十名的粉丝数

多年前使用过R,都忘光了,简单绘制下。
在这里插入图片描述

# 利用R绘制图形
library(RMySQL)
con <- dbConnect(MySQL(), host="192.168.1.6", dbname="test", user="root", password="lyxa123456")
# 先解决花名的编码问题
dbSendQuery(con, "SET NAMES utf8mb4")
star <- dbGetQuery(con,"select max(starname) name,sum(votenum) vts,count(*) fans from starfan2 group by star order by vts desc limit 20")
# 重新解码花名
Encoding(star$name) <-"UTF-8"
star$name <- as.factor(star$name);
plot(star$name,star$fans)

6、前20名的粉丝投票平均数

select max(starname) name,sum(votenum) vts,count(*) fans, sum(votenum)/count(*) avegVotes from starfan2 group by star order by vts desc limit 20

经过查询,可知道各个大佬的粉丝死忠程度。

排名博主票数粉丝数
1敖 丙89543212
2Hollis在csdn52151445
3谷哥的小弟4950666
4帅地46321901
5小傅哥4127682
6一个处女座的程序猿40121233
7小林coding3951761
8沉默王二39451299
91_bit3921667
10第三女神程忆难3322809
11qq26480087263062359
12中间件兴趣圈2816359
13张志翔2776602
14李锐博恩2712504
15谙忆2632950
16Jack-Cui2503620
17TrueDei2489671
18程序猿小亮2421235
19lovelife1102333221
20LaoYuanPython2277574

按照总票数 124897计算,每个人平均投票数为 4.8票。

7、小结

经此一役,博主发现了自己短板,即使数据在手,也无法分析挖掘出更多信息,博主的大数据分析能力太差了额。需要向大佬们学习数据挖掘的知识了。

标签:username,https,blog,2020,csdn,CSDN,net,NULL,之星
来源: https://blog.csdn.net/webmote/article/details/112859584