可视化展示GitHub awesome中的项目相关信息

项目类

属性列表

name:项目名称

url:项目链接

description:项目描述

star

fork

issue

爬虫类

1.获取入口页面

通过 OkHttp 库获取到网页的 HTML 形式内容

1.创建 Client 对象

2.创建一个 Request 对象

3.创建一个 Call 对象,负责进行一次网络访问操作

4.发送请求给服务器,获取到 Response 对象

5.判断响应是否成功

2.解析入口页面,获取项目列表

使用 Jsoup分析页面结构,得到项目的信息

1.创建 Document 对象,把 HTML 字符串转换为 Document 对象

2.使用 getElementByTag 方法获取到所有的 li 标签

3.再获取 li 标签中的 a 标签

该 li 标签不含项目的情况有:

  • ​ 该 li 标签有多个或者没有链接
  • ​ 项目链接不以 https://github.com 开头
  • 项目链接存在黑名单中(黑名单保存着虽不符合以上条件但不是项目的链接)

4.获取标签中的内容保存在 project 对象中

在这里插入图片描述

3.遍历项目列表,调用 GitHub API获取项目信息

1.根据项目链接提取项目的仓库摘要(即仓库名和作者名)

https://github.com/doov-io/doov => doov-io/doov

特殊情况 : https://github.com/networknt/light-4j/

https://github.com/codenameone/CodenameOne/tree/master/vm

在这里插入图片描述

2.调用GitHub API 根据仓库摘要获取 JSON形式的仓库信息

在这里插入图片描述

4.解析 JSON 数据,得到 star 等信息

借助 TypeToken 把 JSON 数据转为键值对数据

Type type = new TypeToken<HashMap<String, Object>>(){}.getType();
HashMap<String, Object> map = gson.fromJson(jsonStr, type);

在这里插入图片描述

在这里插入图片描述

5.把 project 保存到数据库中

多线程版爬虫类

1.获取入口页面

2.解析入口页面,获取项目列表

3.创建线程池,每个线程处理调用 API 获取数据及分析项目数据

在这里插入图片描述

4.等待所有线程池任务结束后,结束线程池

5.保存到数据库

创建、连接及关闭数据库类

1.在云服务器上创建好数据库和表

在这里插入图片描述

2.通过 DataSource(数据源)获取Connection,加锁保证线程安全,同时双重 if 判定

3.关闭连接:先关闭 ResultSet,再是 PrepareStatement,最后是 Connection

数据库执行类

把一个 project 对象保存到数据库中

1.获取数据库连接

2.构造 preparedStatement 拼接 sql 语句

3.执行 SQL 语句,完成数据库插入操作

4.关闭连接

根据日期查找项目

1.获取数据库连接

2.构造 preparedStatement 拼接 sql 语句

3.执行 SQL 语句,得到结果集并保存

4.关闭连接

生成jar包并部署到云服务器中

Servlet类

请求格式:GET /allRank?date=2020xxxx

响应格式:JSON形式的数据

前端页面

1.通过https://echarts.apache.org/zh/builder.html在线定制图标得到echarts.min.js文件

2.获取当前日期

3.使用 JQuery 发送请求给服务器

在这里插入图片描述

4.收到响应绘制图表

生成war包并部署到云服务器中

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值