2020博客之星评选-票数排行(最终top50)(代码片段)

一头小山猪 一头小山猪     2023-03-09     175

关键词:

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

2020博客之星评选 - 票数排行(最终Top50)

本文关键字:2020、博客之星、爬虫、票数排行

文章目录

一、博客之星

2020年的博客之星已经开始啦,根据规则投票会持续一段时间,但是在活动页面并未有实时排行榜,本文将用爬虫实现数据的采集以及排序,可以直接查看到评比排行~

文末将展示最终的Top50博主名单。

二、实现思路

1. 确定数据源

首先我们需要在页面上获得数据,由于每次刷新数据都是会变化的,所以一般都是Ajax请求,我们需要用到开发者工具来查看网络请求。

  • 如何呼出开发者工具

在进行页面分析的时候,浏览器的开发者工具是不必可少的,笔者以蓝狐(火狐浏览器开发版)为例。对于其他的浏览器,主要都是基于Gecko(火狐内核)、Blink(Chrome内核)、Webkit(Safari内核)、Trident(IE内核)来套的壳子,所以整体的呼出方式不会差别很大。
首先我们在页面空白处点击右键 -> 点击检查元素

  • 寻找数据源

页面链接:https://bss.csdn.net/m/topic/blog_star2020,打开后切换至网络栏目,点击重新载入:

可以按照类型排序,过滤掉一些静态资源的请求。发现数据来自于一个getUser的接口,返回的数据可以使用JSON格式进行解析。

2. 实现步骤

找到数据源以后,步骤就比较明确了。在获取数据之后进行解析,提取出我们需要的两个字段:博主名称当前票数,最后再对数据排序输出。
我们将使用Python来进行实现,需要先安装scrapy(爬虫框架)和json(方便解析JSON格式数据)两个组件,可以使用如下命令:

pip install scrapy
pip install json

三、实现过程

1. 创建项目

安装好scrapy后,在命令终端中选定一个文件夹,使用如下命令创建一个项目:

scrapy startproject StarRank

其中项目名称为StarRank,创建完成后可以直接使用Pycharm打开,项目结构如下:

2. 数据采集

接下来我们在spiders文件夹中创建一个python文件:star_spider.py,来完成数据的采集。

import scrapy

class StarSpider(scrapy.Spider):
    # 定义爬虫名称,在启动任务时指定
    name = "star"

    def start_requests(self):
        # 声明访问地址链接
        url = "https://bss.csdn.net/m/topic/blog_star2020/getUsers"
        # 发送请求,同时指定回调函数(自定义)
        yield scrapy.FormRequest(url, callback=self.parse)

3. 解析排序

数据接收到之后是一个JSON结构的字符串,我们可以引入json库来快速的解析,同时对数据进行排序,回调函数内容如下:

    def parse(self, response):
        # 获取json数据中的data部分
        data_list = json.loads(response.text)['data']
        # 定义一个字典类型
        dict = 
        for data in data_list:
            # 提取出博主名称与当前票数,成对儿存放
            dict[data["nick_name"]] = int(data["vote_num"])
        # 使用sorted根据字典的value进行降序排序
        rank = sorted(dict.items(),key=lambda x:x[1],reverse=True)
        i = 1
        # 对元组进行遍历,输出结果
        for name,count in rank:
            print("第" + str(i) + "名票数:" + str(count) + ",博主:" + name)
            i += 1

4. 完整代码

import scrapy
import json

class StarSpider(scrapy.Spider):
    name = "star"

    def start_requests(self):
        url = "https://bss.csdn.net/m/topic/blog_star2020/getUsers"
        yield scrapy.FormRequest(url, callback=self.parse)

    def parse(self, response):
        data_list = json.loads(response.text)['data']
        dict = 
        for data in data_list:
            dict[data["nick_name"]] = int(data["vote_num"])
        rank = sorted(dict.items(),key=lambda x:x[1],reverse=True)
        i = 1
        for name,count in rank:
            print("第" + str(i) + "名票数:" + str(count) + ",博主:" + name)
            i += 1

代码编写完成后,进入到项目的根目录,即spiders文件夹的上一级目录,使用如下命令即可启动项目:

scrapy crawl star

5. 关闭日志

对于一般的数据处理流程来说,应该把数据直接保存至json或csv文件中,然后再使用单独的程序进行读取和处理。本例为了方便对数据直接进行了处理,带来的问题就是每次执行时会有很多爬虫任务执行时产生的日志信息,我们可以修改settings.py文件,在其中将日志级别调整至ERROR即可:

LOG_LEVEL = 'ERROR'

最终执行效果如下:

四、今日排行

经过了半个月的激动人心、惊心动魄、眉来眼去。。。的拉票阶段,最终的Top50名单出炉:

排名博主票数
1敖 丙10275
2谷哥的小弟7856
3帅地6791
4沉默王二6293
5Hollis在csdn6182
6小傅哥5962
7一个处女座的程序猿5652
8李锐博恩5640
9小林coding5572
10ThinkWon5515
11谙忆5283
12中间件兴趣圈5215
131_bit5165
14qq26480087264712
15Jack-Cui4670
16第三女神程忆难4615
17TrueDei4612
18lovelife1104383
19LaoYuanPython4310
20单片机菜鸟哥4242
21程序猿小亮3728
22柔若寒3244
23小山猪的沙塔2673
24ReCclay2649
25艺博东2546
26JasonLee’blog1771
27Alice菌1687
28记得诚1343
29公众号-JavaEdge1329
30小麦大叔1286
31carl-zhao1171
32牧小农1158
33考古学家lx1084
34riemann_1051
35Engineer-Bruce_Yang1048
36herosunly981
37SoWhat1412969
38许进进963
39Data-Mining947
40刘炫320926
41AI 菌913
42刘一哥GIS906
43梦想橡皮擦889
44cutercorley887
45webmote864
46Bubbliiiing863
47江南、董少852
48xcbeyond848
49xindoo843
50象在舞839

扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~

评分开启2021博客之星总评选,年度“卷”王就是你

2021“博客之星”年度总评选报名已结束啦!你参选了哪个技术领域呢?你有关注哪些大佬呢?你又想为谁打出五星“好评”呢?现在,评分系统已正式开启!快人一步才能有更大胜算,赶快进入官网&#x... 查看详情

评分开启2021年博客之星总评选,年度“卷”王就是你

2021“博客之星”年度总评选报名已结束啦!你参选了哪个技术领域呢?你有关注哪些大佬呢?你又想为谁打出五星“好评”呢?现在,评分系统已正式开启!快人一步才能有更大胜算,赶快进入官网&#x... 查看详情

揭榜|2022年度“博客之星&新星”top10已出炉

目录「博客之星」TOP10「博客新星」TOP10评选说明奖品说明奖项及奖品地址填写说明奖品发放时间说明2022年度博客之星活动官网:https://www.csdn.net/blogstar20222022年度「博客之星」评选从2022年12月15日活动启动,历经海选报名... 查看详情

2022年度「博客之星」评选top100完整榜单排名

 2022年度博客之星活动官网:https://www.csdn.net/blogstar20222022年度「博客之星」&「博客新星」TOP10获奖名单到此查询:https://blogdev.blog.csdn.net/article/details/128820125TOP100完整榜单排名排名用户ID用户昵称博客地址1guorui_java哪吒... 查看详情

博客之星的评选的意义真的是非常重大

...c;50分二、和博主建立友谊的最佳时机    链接:博客之星-英雄哪里出来    我会在投票列表一个一个回复。三、认识了不少朋友    给我投票的,我基本都关注了,看我关注了1496个人了。四、多一个朋... 查看详情

2021年「博客之星」评选投票

我正在参加年度博客之星评选,请大家帮我投票打分,您的每一分都是对我的支持与鼓励。链接:https://bbs.csdn.net/topics/603959535   查看详情

2019csdn博客之星评选,博星冲刺,请大家多多支持!

...术人以及各位粉丝的支持,博主被官方评定为2019CSDN博客TOP200。第一次写CSDN博客到现在已经过去三年了,不知不觉就写了三年,发表了200多篇文章。记得刚开始写只是为了记录开发过程中遇到的各种坑,等以后遇... 查看详情

csdn2015博客之星评选之拉票环节

      近期接到CSDN邀请。參加了CSDN2015博客之星的评选活动。以下是给我拉票的链接地址:http://vote.blog.csdn.net/blogstar2015/candidate?username=qq446282412       我的宣言&nbs 查看详情

《51cto博客2.0——活跃之星评选大赛》获奖图书收到啦

活跃之星获奖在上个月参加的《51CTO博客2.0——活跃之星评选大赛》http://blog.51cto.com/51ctoblog/2097470非常荣幸地获得了第三名,感谢主办方51CTO博客,也非常感谢关注我博客的朋友们!奖品分享下面是收到的图书,跟大家分享一下... 查看详情

2021博客之星top100

27号博客之星开放评比,战况是异常激烈啊,今年感觉参赛的人数比去年多,一共有将近8000人参与了评选。作为好事的我当然要分析一下啊。分析的思路是每个赛道选出一万分以上的,以下是各个赛道的积分情况... 查看详情

“博客之星”年度评选

...亲爱的读者朋友们,你们好呀!一年一度的CSDN“博客之星”年度评选活动又拉开了帷幕,我们的参评口号是“用心灵感受算法之美,用双手敲出美好未来。”“人生是一条漫漫长路,走向远方是为了让生命更... 查看详情

学委参加博客之星评选啦

...文章,写代码,会画图,偶尔编编段子。成为博客之星还需要会拉票,整活 查看详情

我正在参加年度博客之星评选,期待您的五星好评。

我正在参加年度博客之星评选,请大家帮我投票打分,您的每一分都是对我的支持与鼓励!进入链接后的最下方投票区,期待您的五星好评哦!https://bbs.csdn.net/topics/603958361 查看详情

51cto博客2.0活跃之星评选大赛:获奖图书收到了!!!

我参加由51CTO组织的“51CTO博客2.0---活跃之星评选大赛“http://blog.51cto.com/51ctoblog/2097470”获得二等奖(自选图书一本+学院金币10个)。感谢大家的支持,希望以后有活动大家也踊跃参加,下面是收到的获奖图书,给大家分享一下... 查看详情

「博客之星」评选,诚信的互投啊,留链定回

⭐欢迎诚信互投⭐⭐防止恶意留链接或者遗漏,欢迎诚信互投⭐我会分时间段根据用户“用户评价列表”逐一的回复五星,可查⭐谢谢各位朋友,相互帮助⭐入口https://bbs.csdn.net/topics/603956205 查看详情

《51cto博客2.0——活跃之星评选大赛》送的获奖书籍及个人感言

上个月参加的《51CTO博客2.0——活跃之星评选大赛》http://blog.51cto.com/51ctoblog/2097470非常荣幸地获得了第一名,非常感谢主办方51CTO博客这本书质量非常好,所以真的非常感谢51CTO博客!在51CTO网站的课程学习到很多的知识,里面的课... 查看详情

学委进了,进哪了?

...到新年假期,最近太忙了,忙着工作,写书。博客停更近一周。言归正传,博客之星学委进入了TOP50,撒花🎉,记录一下。也在这里跟各位朋友们,读者们,共同分享一下这个喜悦!最近博... 查看详情

学委进了,进哪了?

...到新年假期,最近太忙了,忙着工作,写书。博客停更近一周。言归正传,博客之星学委进入了TOP50,撒花🎉,记录一下。也在这里跟各位朋友们,读者们,共同分享一下这个喜悦!最近博... 查看详情