一:获取到所有待收集信息的项目列表

步骤:

  1. 获取到所有待收集信息的项目列表
  2. 遍历项目列表 依次获取到每个项目的主页信息 进一步就可以直到该项目的star数 fork数 issue数
  3. 把这些数据存储到mysql中
  4. 写一个简单服务器 来展示数据库中的数据(通过图标的形式 看到一个更直观的效果)

一.获取到所有待收集信息的项目列表

自己写一个爬虫程序,访问Awesome-java这个页面,然后进一步获取这个页面上所有项目链接的信息

1.1观察页面结构

我是先分析页面结构,就是chrom的开发者工具,然后发现Awesome-Java里的项目都是由多个ul标签套着li标签有规律排版的
li就是我想要获取的每一个单独项目
li里面又有个a标签代表着超链接信息,li里面的body部分是这个项目的简单描述信息
在这里插入图片描述


1.2分析页面结构

那么观察完 我们就知道Awesome-Java的页面结构了 这样我们就可以写程序来获取这个页面相关信息了
----1.2.1如何获取到页面内容
构造一个http请求发送给服务器,这里我借助了一个第三方库OkHttp的库,用这个库获取到页面
这里我用maven的方式导入
利用OkHttp的库我就可以根据url获取到对应页面的内容,

试着打印一下

import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.io.IOException;

public class crawler {
   
    public static void main(String[] args) throws IOException {
   
        //获取okHttpClient
        OkHttpClient okHttpClient = new OkHttpClient();
        //创建一个Request对象
        Request request = new Request.Builder().url("https://github.com/akullpp/awesome-java/blob/master/README.md").build();
        //创建一个call对象,这个对象负载进行一次网络访问操作
        Call call = okHttpClient.newCall(request);
        //call提交到服务器,返回一个response对象
        Response response = call.execute();
        //判定响应是否成功
        if (!response.isSuccessful()){
   
            System.out.println("请求失败!");
            return;
        }
        System.out.println(response.body().string());
    }
}

请求之后返回的内容是一个html结构的内容 看起来还是很复杂的,所以我们需要进一步分析提取我们需要的内容

----1.2.2分析页面结构
用字符串方式分析这个页面结构比较麻烦,这里我用了一个第三方库jsoup来分析html页面结构
用Jsoup这个类分析刚刚得到的html内容,就会生成一个Document对象,把字符串转换成了一个树形结构的文档
文档就可以getElementTag去获取各种标签,每个Element就对应一个标签
每个Element里面的内容就是我们要进行排行的项目的内容啦
这个时候创建一个类来表示项目

public class Project {
   
    private String name;//名称
    private String url;//url地址
    private String description;//描述


    private int stars;//点赞数
    private int fork;//贡献人数
    private int openIssiue;//bug数或者需求
}

再一一排查后(因为有的li标签并不是代表一个项目,我们需要将它们筛选掉)
排查后一个标签就对应一个个项目的关键信息了

li标签的text是项目的描述Description li标签里嵌套a标签
a标签的text是项目名称,a里的href参数是url
在这里插入图片描述

public class Crawler {
   
    private HashSet<String> urlBlackList = new HashSet<>()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值