重磅内幕!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/lfdfhl | 130 |
一叶飘舟 | https://blog.csdn.net/jdsjlzx | 130 |
beyondma | https://blog.csdn.net/BEYONDMA | 126 |
herosunly | https://blog.csdn.net/herosunly | 120 |
文宇肃然 | https://blog.csdn.net/wenyusuran | 120 |
谙忆 | https://blog.csdn.net/qq_26525215 | 119 |
vv_小虫 | https://blog.csdn.net/vv_bug | 118 |
ConstXiong | https://blog.csdn.net/meism5 | 117 |
铁锚 | https://blog.csdn.net/renfufei | 117 |
AI之禅 | https://blog.csdn.net/weixin_32393347 | 110 |
_陈哈哈 | https://blog.csdn.net/qq_39390545 | 110 |
白水baishui | https://blog.csdn.net/baishuiniyaonulia | 110 |
carl-zhao | https://blog.csdn.net/u012410733 | 108 |
AlbertS | https://blog.csdn.net/shihengzhen101 | 108 |
Sahadev_ | https://blog.csdn.net/u011064099 | 108 |
671coder | https://blog.csdn.net/liuqiyao_01 | 108 |
恬静的小魔龙 | https://blog.csdn.net/q764424567 | 108 |
小山猪的沙塔 | https://blog.csdn.net/u012039040 | 108 |
简简单单OnlineZuozuo | https://blog.csdn.net/qq_15071263 | 108 |
Trent1985 | https://blog.csdn.net/Trent1985 | 106 |
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 | 敖 丙 | 8954 | 3212 |
2 | Hollis在csdn | 5215 | 1445 |
3 | 谷哥的小弟 | 4950 | 666 |
4 | 帅地 | 4632 | 1901 |
5 | 小傅哥 | 4127 | 682 |
6 | 一个处女座的程序猿 | 4012 | 1233 |
7 | 小林coding | 3951 | 761 |
8 | 沉默王二 | 3945 | 1299 |
9 | 1_bit | 3921 | 667 |
10 | 第三女神程忆难 | 3322 | 809 |
11 | qq2648008726 | 3062 | 359 |
12 | 中间件兴趣圈 | 2816 | 359 |
13 | 张志翔 | 2776 | 602 |
14 | 李锐博恩 | 2712 | 504 |
15 | 谙忆 | 2632 | 950 |
16 | Jack-Cui | 2503 | 620 |
17 | TrueDei | 2489 | 671 |
18 | 程序猿小亮 | 2421 | 235 |
19 | lovelife110 | 2333 | 221 |
20 | LaoYuanPython | 2277 | 574 |
按照总票数 124897
计算,每个人平均投票数为 4.8票。
7、小结
经此一役,博主发现了自己短板,即使数据在手,也无法分析挖掘出更多信息,博主的大数据分析能力太差了额。需要向大佬们学习数据挖掘的知识了。
标签:username,https,blog,2020,csdn,CSDN,net,NULL,之星 来源: https://blog.csdn.net/webmote/article/details/112859584