史上最全的疫情历史数据

前言

这久做的要整理疫情开始以来到现在的疫情数据,今年元旦放假,正好有时间来解决这个事。经过两天的奋斗,各省份所有的历史数据我均已收集完成。上次只是收集了贵州省的,后来我发现数据和爬虫代码还有待优化,所以花了一天的时间对原来的代码进行优化和补充。所以本次收集的数据更加的系统化、更加准确和更加完整。

数据获取

本次爬虫代码的编写依旧是基于springboot框架,代码相较上次也更加的稳定,运行爬虫系统代码可以很容易的获取到所有的历史数据。
收集的数据存储在mysql数据库中,这需要在数据库中建34张数据表来存储对应的历史数据如下图所示:
史上最全的疫情历史数据_第1张图片
爬虫系统的mybatis的部分代码如下:
史上最全的疫情历史数据_第2张图片
本部分的代码编写并不难,只是需要细心一些,别把对应数据库的表明弄混了。
爬虫爬取网页的主要部分是在系统的服务层实现,整体代码结构如下:
史上最全的疫情历史数据_第3张图片
在将数据写入数据库的方法中需要做一个判断,判断省份以找到数据库中对应的数据表存储数据:
史上最全的疫情历史数据_第4张图片
系统中主要获取数据的代码如下

public String PostData(String URL,String province){
        try{
            Connection connection = Jsoup.connect(URL);
            connection.header("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36").ignoreContentType(true).execute();
            Document document = connection.post();
            ParseData(document.toString(),province);
        }catch (IOException e){
            System.out.println("出现异常"+e);
        }
        return null;
    }
 public String ParseData(String text,String province){
        String re_text = "\\{\"ret\"(.*?)}]}";
        Pattern pattern = Pattern.compile(re_text);
        Matcher matcher = pattern.matcher(text);
        if(matcher.find()){
            JSONObject jsonObject = JSON.parseObject(matcher.group());
            JSONArray jsonArray = (JSONArray) jsonObject.get("data");
            for (int i=0;i<jsonArray.size();i++){
                getEntityData((JSONObject) jsonArray.get(i),province);
            }
        }
        return null;
    }

以上只是爬虫的部分代码,仅供参考讨论,单独无法运行。若需要系统源代码请私信我。

数据结果展示

代码编写完成后下图是运行成功时的日志:
史上最全的疫情历史数据_第5张图片
此时,数据已经爬取到数据库中了,以下是数据库中的数据:
史上最全的疫情历史数据_第6张图片
史上最全的疫情历史数据_第7张图片
这是其中一个省的历史表格数据。
下图则是将数据表从数据库中导出为Excel表格的形式
史上最全的疫情历史数据_第8张图片
史上最全的疫情历史数据_第9张图片
至此,全部的新冠疫情历史数据便获取完成。
之前我便提到过,此次用springboot框架实现爬虫系统,是为了使整个爬虫具有可定制化特点,后期可以对数据进行可视化分析,或者也可以直接下载为Excel表格的形式。可以使数据获取和数据分析可视化耦合。

你可能感兴趣的:(爬虫,spring,java,maven,爬虫)