最火的国产开源项目是它?

简介: 最火的国产开源项目是它?

打开gitee看看最有价值的开源项目,然后发现排序是这样的。

这我怎么知道那个是最火的,还好我是程序员,主力语言java,必须自己爬一下。

一、导入依赖库

<!--        爬虫库-->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.14.3</version>
        </dependency>
<!--        导出excel-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.0.5</version>
        </dependency>

二、编写业务代码

导出excel对象

package com.example.demo.util;
 
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
 
 
public class Model  implements Comparable<Model>{
    @ExcelProperty("项目语言")
    @ColumnWidth(20)
    String projectLabels;
    @ExcelProperty(value = "项目标题")
    @ColumnWidth(40)
    String title;
    @ExcelProperty("项目简介")
    @ColumnWidth(60)
    String projectDescription;
    //获取项目starts
    @ExcelProperty("star")
    @ColumnWidth(10)
    Double star;
    //获取项目分支数量
    @ExcelProperty("Fork")
    @ColumnWidth(10)
    Double fork;
    @ExcelProperty("项目图片")
    String imageSrc;
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public String getImageSrc() {
        return imageSrc;
    }
 
    public void setImageSrc(String imageSrc) {
        this.imageSrc = imageSrc;
    }
 
    public String getProjectDescription() {
        return projectDescription;
    }
 
    public void setProjectDescription(String projectDescription) {
        this.projectDescription = projectDescription;
    }
 
    public String getProjectLabels() {
        return projectLabels;
    }
 
    public void setProjectLabels(String projectLabels) {
        this.projectLabels = projectLabels;
    }
 
    public Double getStar() {
        return star;
    }
 
    public void setStar(Double star) {
        this.star = star;
    }
 
    public Double getFork() {
        return fork;
    }
 
    public void setFork(Double fork) {
        this.fork = fork;
    }
 
    @Override
    public int compareTo(Model o) {
        if(o.star>this.star){
            return 1;
        }else {
            return -1;
        }
    }
}

爬取网页,获取各元素的值

package com.example.demo.util;
 
import com.alibaba.excel.EasyExcel;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
 
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
 
public class JsoupTestGitee {
    public static void main(String[] args) throws IOException {
        //    获取目标网页 https://gitee.com/gvp/all
        String url = "https://gitee.com/gvp/all";
        //设置浏览器头部信息
        String userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36";
        //获取网页DOM
        Document document = Jsoup.connect(url).userAgent(userAgent).get();
        //获取所有项目子元素
        String parentClass = "ui fluid card project-card categorical-project-card";
        Elements elementsByClass = document.getElementsByClass(parentClass);
        List<Model> res = new ArrayList<>();
        //遍历元素
        elementsByClass.forEach((tem) -> {
            Model mod = new Model();
            //获取项目名称
            String title = "project-name linkable";
            String titleText = tem.getElementsByClass(title).eq(0).text();
            mod.setTitle(titleText);
            //获取项目图标地址
            String avatar = "ui avatar";
            String src = tem.getElementsByClass(avatar).eq(0).attr("src");
            mod.setImageSrc(src);
            //获取项目简介
            String description = "project-description";
            String descriptionText = tem.getElementsByClass(description).eq(0).text();
            mod.setProjectDescription(descriptionText);
            //获取项目语言
            String projectLabels = "project-labels";
            String projectLabelsText = tem.getElementsByClass(projectLabels).eq(0).text();
            mod.setProjectLabels(projectLabelsText);
            //获取项目starts
            String starText = tem.getElementsByClass("linkable meta").eq(0).text();
            mod.setStar(toDouble(starText));
            //获取项目分支数量
            String forkText = tem.getElementsByClass("linkable meta").eq(1).text();
            mod.setFork(toDouble(forkText));
            res.add(mod);
        });
        //生成Excel
        String fileName = System.currentTimeMillis() + ".xlsx";
        //获取的数据按照star排序
        Collections.sort(res);
        //将数据写入到excel中
        EasyExcel.write(fileName, Model.class).sheet("项目").doWrite(res);
 
    }
 
    /**
     * 将1.1K转换为11000
     * @param parm
     * @return
     */
    private static Double toDouble(String parm) {
        Double res=0.0;
        if (parm.contains("K")) {
            int length = parm.length();
            parm = String.valueOf(Double.valueOf(parm.substring(0, length - 1)) * 1000);
        }
        if (parm != null && !Objects.equals(parm, "")) {
            res = Double.valueOf(parm);
        }
        return res;
    }
 
}


三、运行程序

就是它lengleng / pig

相关文章
|
Cloud Native Dubbo 应用服务中间件
阿里巴巴捐献的14个顶级开源项目,国内开源贡献第一!
代表性的项目包括龙蜥操作系统、Apache RocketMQ、Apache Dubbo、Spring Cloud Alibaba 等
|
大数据
开源大数据技术社区召集令
Hadoop生态技术已经俨然成为大数据事实标准,为了给广大同学、朋友提供一些交流学习的环境,沉淀大数据技术相关的资料,特别发起此次关注活动。
8924 0
|
消息中间件 机器学习/深度学习 人工智能
中国科协发布 2021 开源创新榜,阿里巴巴 2 大开源社区、5 大开源项目上榜
3 月 8 日消息,日前,中国科协正式发布 2021“科创中国”开源创新榜单,推选出 50 项年度优秀开源产品及相关机构。
中国科协发布 2021 开源创新榜,阿里巴巴 2 大开源社区、5 大开源项目上榜
|
人工智能 运维 供应链
2021 OSCAR 开源产业大会来了!八大亮点先睹为快
2021 OSCAR 开源产业大会来了!八大亮点先睹为快
2021 OSCAR 开源产业大会来了!八大亮点先睹为快
|
Linux 双11 云计算
共建开源新生态|龙蜥荣获“开源社区及开源项目”OSCAR 开源尖峰案例奖
龙蜥社区凭借领先的技术创新实力和丰富的开源生态,荣获“开源社区及开源项目”OSCAR 开源尖峰案例奖。
共建开源新生态|龙蜥荣获“开源社区及开源项目”OSCAR 开源尖峰案例奖
|
PouchContainer 容器
阿里PouchContainer、OpenMessaging两大开源项目惊喜亮相“OSCAR开源先锋日”
10月20日,由中国信息通信研究院主办,云计算标准与开源推进委员会、清华大学TUNA 协会、北京大学开源软件协会承办,云计算开源产业联盟、华为、腾讯、阿里巴巴、小米支持,高效运维社区协办的“OSCAR开源先锋日”在北京完美落幕。
2000 0
|
存储 移动开发 Java
阿里巴巴开源技术汇总:115个软件
云栖社区近期策划了多期和开源产品相关的内容,如GitHub最流行的开源机器学习、大数据等项目,揭秘阿里Weex项目,Hilo开源分析等。深入挖掘,发现开源中国已经收集了数年来阿里115个开源软件,特别分享,也征集大家对后续阿里开源技术选题的建议。
34289 0
|
开发工具
我所入选的微软技术社区电子报
本文基于Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名http://www.cnblogs.com/luminji(包含链接)。
601 0
我所入选的微软技术社区电子报