关键词:
写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从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 |
5 | Hollis在csdn | 6182 |
6 | 小傅哥 | 5962 |
7 | 一个处女座的程序猿 | 5652 |
8 | 李锐博恩 | 5640 |
9 | 小林coding | 5572 |
10 | ThinkWon | 5515 |
11 | 谙忆 | 5283 |
12 | 中间件兴趣圈 | 5215 |
13 | 1_bit | 5165 |
14 | qq2648008726 | 4712 |
15 | Jack-Cui | 4670 |
16 | 第三女神程忆难 | 4615 |
17 | TrueDei | 4612 |
18 | lovelife110 | 4383 |
19 | LaoYuanPython | 4310 |
20 | 单片机菜鸟哥 | 4242 |
21 | 程序猿小亮 | 3728 |
22 | 柔若寒 | 3244 |
23 | 小山猪的沙塔 | 2673 |
24 | ReCclay | 2649 |
25 | 艺博东 | 2546 |
26 | JasonLee’blog | 1771 |
27 | Alice菌 | 1687 |
28 | 记得诚 | 1343 |
29 | 公众号-JavaEdge | 1329 |
30 | 小麦大叔 | 1286 |
31 | carl-zhao | 1171 |
32 | 牧小农 | 1158 |
33 | 考古学家lx | 1084 |
34 | riemann_ | 1051 |
35 | Engineer-Bruce_Yang | 1048 |
36 | herosunly | 981 |
37 | SoWhat1412 | 969 |
38 | 许进进 | 963 |
39 | Data-Mining | 947 |
40 | 刘炫320 | 926 |
41 | AI 菌 | 913 |
42 | 刘一哥GIS | 906 |
43 | 梦想橡皮擦 | 889 |
44 | cutercorley | 887 |
45 | webmote | 864 |
46 | Bubbliiiing | 863 |
47 | 江南、董少 | 852 |
48 | xcbeyond | 848 |
49 | xindoo | 843 |
50 | 象在舞 | 839 |
扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~
评分开启2021博客之星总评选,年度“卷”王就是你
2021“博客之星”年度总评选报名已结束啦!你参选了哪个技术领域呢?你有关注哪些大佬呢?你又想为谁打出五星“好评”呢?现在,评分系统已正式开启!快人一步才能有更大胜算,赶快进入官网... 查看详情
评分开启2021年博客之星总评选,年度“卷”王就是你
2021“博客之星”年度总评选报名已结束啦!你参选了哪个技术领域呢?你有关注哪些大佬呢?你又想为谁打出五星“好评”呢?现在,评分系统已正式开启!快人一步才能有更大胜算,赶快进入官网... 查看详情
揭榜|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,撒花🎉,记录一下。也在这里跟各位朋友们,读者们,共同分享一下这个喜悦!最近博... 查看详情