史上最全的疫情历史数据
前言
这久做的要整理疫情开始以来到现在的疫情数据,今年元旦放假,正好有时间来解决这个事。经过两天的奋斗,各省份所有的历史数据我均已收集完成。上次只是收集了贵州省的,后来我发现数据和爬虫代码还有待优化,所以花了一天的时间对原来的代码进行优化和补充。所以本次收集的数据更加的系统化、更加准确和更加完整。
数据获取
本次爬虫代码的编写依旧是基于springboot框架,代码相较上次也更加的稳定,运行爬虫系统代码可以很容易的获取到所有的历史数据。 收集的数据存储在mysql数据库中,这需要在数据库中建34张数据表来存储对应的历史数据如下图所示: 爬虫系统的mybatis的部分代码如下: 本部分的代码编写并不难,只是需要细心一些,别把对应数据库的表明弄混了。 爬虫爬取网页的主要部分是在系统的服务层实现,整体代码结构如下: 在将数据写入数据库的方法中需要做一个判断,判断省份以找到数据库中对应的数据表存储数据: 系统中主要获取数据的代码如下
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; }
数据结果展示
代码编写完成后下图是运行成功时的日志: 此时,数据已经爬取到数据库中了,以下是数据库中的数据: 这是其中一个省的历史表格数据。 下图则是将数据表从数据库中导出为Excel表格的形式 至此,全部的新冠疫情历史数据便获取完成。 之前我便提到过,此次用springboot框架实现爬虫系统,是为了使整个爬虫具有可定制化特点,后期可以对数据进行可视化分析,或者也可以直接下载为Excel表格的形式。可以使数据获取和数据分析可视化耦合。