github用户followers分析

爬的是Miguel Grinberg 因为自己的followers太少了

再次打个广告 欢迎来踩我的个人博客
个人博客

0x01 爬取用户信息

  • 用户名称
  • 用户所在位置
  • 用户Repositories、Stars、Followers、Following
  • 去年一年的贡献量

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-geITb2v3-1589990123733)(http://p39e7cgx2.bkt.clouddn.com/github-%E4%BE%8B%E5%AD%90.png)]

Ubuntu上的图片编辑不会用 就没有在图片上进行编辑…(⊙_⊙;)…

刚开始我记得之前按照Python编程从入门到实践来爬的时候用的是Github的api 但是试了之后 发现有一些问题

  1. API请求频率有限制 无法通过多线程获取批量的用户信息
  2. 无法获取用户过去一年的contributions

爬虫的步骤其实是老套路

  1. 先获取目标用户Miguel Grinberg 的所有followers
  2. 根据follower构造该用户的URL遍历所有用户
  3. 提取所需信息
  4. 数据清洗
  5. EDA

0x02 环境

  • Re
  • 多进程
  • Requests
  • Python3.5
  • pyecharts

0x03分析结果

在爬完的时候共有4064位followers

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7tsq2cxs-1589990123735)(http://p39e7cgx2.bkt.clouddn.com/github-%E7%BB%9F%E8%AE%A1.png)]

  1. 用户地理位置词云

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pbRzodV7-1589990123739)(http://p39e7cgx2.bkt.clouddn.com/github-places.jpg)]

    看来关注大神的人主要分布在中国印度 在中国关注人主要还是居住在北京 嗯~~~ 怪不得北京的python岗位那么多工资那么高

    def plot_positon():
        """
        graph position
        :return: 
        """
        df = pd.read_csv(data_path)
        data_list = list(df['position'])
        data_pos = [pos for pos in data_list if str(pos) != 'nan']
        #中文转拼音
        places = []
        for row in data_pos:
            place = ''.join(lazy_pinyin(row))
            places.append(place)
    
        wordcloud = WordCloud(background_color='white',
                              width=1024,
                              height=768,
                              margin=2,
                              max_font_size=300).generate(str(places)) #转为str防止报错
        wordcloud.to_file('templates/github-places.jpg')
        plt.imshow(wordcloud)
        plt.axis("off")
        plt.show()
    

  2. 用户repositories分析

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sHDBdchJ-1589990123742)(http://p39e7cgx2.bkt.clouddn.com/github-repositories.png)]

    出于好奇 点开了几位repositories超过1000的大兄弟的主页 嗯 看来还是fork的多哇 有一位大兄弟甚至有13100个repositories不过我再去搜索的时候就没有这位大大大兄弟了

  3. 用户stars分析

    在这里不得不说点击star是一个好习惯 毕竟都是耗了一定时间撸的代码 觉得好玩儿就点一个呗

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZhNvvmJS-1589990123744)(http://p39e7cgx2.bkt.clouddn.com/github-stars.png)]

    然后我发现了一位老铁是个star狂魔angusshire 217000个赞 Σ(っ °Д °;)っ嗯~~~ 真是个好习惯啊!!!

  4. 用户followers分析

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jkZzVvls-1589990123745)(http://p39e7cgx2.bkt.clouddn.com/github-followers.png)]

    嗯 还是在1~10的人数居多啊 这让我想到了当初有同学刚开github的时候到处问人有没有github 有github就强行让关注ヽ(*。>Д<)o゜ 然后仔细看超过1000的有6位大牛 哇咔咔 有大牛 别拉着我 我要去关注一波(/▽\)

  5. 用户following分析

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1TmhFVRq-1589990123747)(http://p39e7cgx2.bkt.clouddn.com/github-following.png)]

    嗯 还是一样1-10的人数居多 不过还有超过1000的是个什么情况嗯~~~ 还是这位点赞狂魔大兄弟 angusshire 不过让我好奇的是为什么他自己的repositories量这么少 但是followers那么多

  6. 过去一年用户contributions

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gd2klj4T-1589990123748)(http://p39e7cgx2.bkt.clouddn.com/github-contributions.png)]

    嗯 可以看到大多数人的活跃度在1-50之间 那么为什么100-500之间会出现陡增嘞 会不会是每天一点绿的重度用户 譬如这种

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFtcbkDl-1589990123749)(http://p39e7cgx2.bkt.clouddn.com/github-show.png)]

    def plot_bar(data,name):
        """
        graph
        :return: 
        """
        # print(df[:1])
        data_list = list(data[name]) #转化为列表方便分析
        # print(data_list[:10])
        print(len(data_list))
        print('max {} = {}'.format(name,max(data_list)))
        labels = ['00~00','01-10','11-50','51-100','101-500','501-1000','>1000']
        sizes = []
        sizes.append(len([count for count in data_list if count == 0]))
        sizes.append(len([count for count in data_list if 10>= count> 0]))
        sizes.append(len([count for count in data_list if 50>= count > 10]))
        sizes.append(len([count for count in data_list if 100>= count > 50]))
        sizes.append(len([count for count in data_list if 500>= count > 100]))
        sizes.append(len([count for count in data_list if 1000>= count > 500]))
        sizes.append(len([count for count in data_list if count > 1000]))
        bar = Bar(name,'by KongWiKi')
        bar.add('',labels,sizes,is_lable_show=True,mark_line=['max','min'])
        bar.render('templates/{}.html'.format(name))
    def main():
        df = pd.read_csv(data_path)
        features = ['stars','followers','following','repositories','contributions']
        for i in features:
            print(i)
            plot_bar(df,i)
    
        plot_positon()
    
    if __name__ == '__main__':
        main()
    

0x04 总结

不得不说 pyecharts真心好 要比之前做分析的时候flask+echarts来的要快好多

不玩儿 去学习了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值