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

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

打开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

目录
相关文章
|
开发者
开发者投身开源项目的能够获得什么?
作为开发者,编程不仅是工作和饭碗,也是兴趣爱好的体现。虽然说有一部分是为了生活才选择了编程开发,但是大部分开发者是因为兴趣和爱好才加入编程队伍中的。不知不觉IT互联网行业已经发展了二十多年,基于开源的软件及应用也是有了快速的发展,越来越多的开发者投入到了开源项目的贡献中来,这让开发者和开源项目建立了很好的连接。
355 1
开发者投身开源项目的能够获得什么?
超炫酷项目来袭!DragGAN 火爆开源社区!
你在 Github 上见过一个空仓库在短短几天内就斩获 10K star 的项目吗? 今天树先生给大家介绍一款超炫酷的项目——DragGAN,来一起看看它为何如此火爆。 不同于之前大火的 Stable Diffusion 与 Midjourney 使用的扩散模型,DragGAN 是一款基于生成对抗网络(GANs)技术的图片编辑项目。
|
Apache 开发者
成功打造一个开源软件的秘诀在于开源社区
成功打造一个开源软件的秘诀在于开源社区
177 0
|
消息中间件 机器学习/深度学习 人工智能
中国科协发布 2021 开源创新榜,阿里巴巴 2 大开源社区、5 大开源项目上榜
3 月 8 日消息,日前,中国科协正式发布 2021“科创中国”开源创新榜单,推选出 50 项年度优秀开源产品及相关机构。
中国科协发布 2021 开源创新榜,阿里巴巴 2 大开源社区、5 大开源项目上榜
|
PouchContainer 容器
阿里PouchContainer、OpenMessaging两大开源项目惊喜亮相“OSCAR开源先锋日”
10月20日,由中国信息通信研究院主办,云计算标准与开源推进委员会、清华大学TUNA 协会、北京大学开源软件协会承办,云计算开源产业联盟、华为、腾讯、阿里巴巴、小米支持,高效运维社区协办的“OSCAR开源先锋日”在北京完美落幕。
1956 0
|
存储 移动开发 Java
阿里巴巴开源技术汇总:115个软件
云栖社区近期策划了多期和开源产品相关的内容,如GitHub最流行的开源机器学习、大数据等项目,揭秘阿里Weex项目,Hilo开源分析等。深入挖掘,发现开源中国已经收集了数年来阿里115个开源软件,特别分享,也征集大家对后续阿里开源技术选题的建议。
34104 0
|
MySQL Java 关系型数据库
阿里巴巴开源技术汇总:115个软件(三)
Hi~大家好,第三期阿里开源技术汇总又和大家见面了!在这一期中我们又给大家带来了20个项目的介绍,保证能让你们看得大呼过瘾。准备好了吗?现在就让我们跟随云栖社区一起看看在这期的文章里出现的哪些新鲜刺激的开源项目吧!
13555 0
|
安全 Oracle 关系型数据库

热门文章

最新文章