技能雷达图

                       

之前在搜索一些资料的时候,发现开源中国这个博客网站有一大亮点。那就是一张技能雷达图。大致如下:
开源中国技能雷达图

但是遗憾的是CSDN官方并不支持这一实现,其实对于技能雷达图而言,言简意赅的能表现出一个技术者擅长的领域,以及不擅长的领域。

抱着玩一玩的态度,我也着手实现了一下针对CSDN博客用户的技能雷达图。下面先来看下最终实现的效果图。

CSDN 博客雷达图

CSDN 博客用户专属技能雷达图

接下来记录一下整体的实现流程。


思路

根据用户指定的博客ID,找到其文章分类情况。然后分别计算分类下文章的得分情况。

这个得分默认按照CSDN官方的规则计算。即:

  • 博文每增加300个浏览量,积分加1
  • 被人评论加一分
  • 被人点赞加一分
  • 被人点踩减一分

这里用的规则不是很适合,但是一般而言,一篇博客的浏览量,在一定程度上也代表了这篇文章的质量。

核心代码

计算部分

按照思路,这又是一个简单爬虫相关了。代码中已经做了比较详细的注释。

#!usr/bin/env python# coding: utf8import requestsimport mathimport refrom bs4 import BeautifulSoupclass Radar(object):    """    技术雷达实现    """    def __init__(self, username):        """初始化用户名以及相应的域名前缀"""        self.username = username        self.domain = "http://blog.csdn.net"    def download(self, url):        """下载通用方法"""        headers = {            'Host': 'blog.csdn.net',            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36'        }        response = requests.get(url=url, headers=headers)        return response.text if response.status_code == 200 else None    def str_concat(self, *args):        """ 字符串拼接方法,满足不定参数的实现"""        tempstr = ''        for item in args:            tempstr += item        return tempstr    def get_catagories(self):        """        计算username对应的文章类别信息,获取类别名称, 对应的URL以及为其设置编号        """        url = self.str_concat(self.domain, '/', self.username)        html = self.download(url=url)        soup = BeautifulSoup(html, 'html.parser')        temp_catagories = soup.find_all('div', {
   'id': 'panel_Category'})[-1].find_all('a')        catagory = []        for index, item in enumerate(temp_catagories):            counts = soup.find_all('div', {
   'id': 'panel_Category'})[-1].find
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值