移动端和web端 全球疫情数据查询

首先需要用爬虫,在这我是用的java进行的爬取丁香园疫情数据 学习位置 https://blog.csdn.net/qq_27471405/article/details/104140132 ,在其基础上进行了修改以爬取全球数据) 爬取全球数据,并存到电脑上的MySQL。
package yiqing;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Timestamp;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
import javax.xml.crypto.Data;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class WuhanService {
public static void main(String[] args) throws IOException {
getAreaStat();
getListByCountryTypeService2();
}
// 根URL
private static String httpRequset(String requesturl) throws IOException {
StringBuffer buffer = null;
BufferedReader bufferedReader = null;
InputStreamReader inputStreamReader = null;
InputStream inputStream = null;
HttpsURLConnection httpsURLConnection = null;
try {
URL url = new URL(requesturl);
httpsURLConnection = (HttpsURLConnection) url.openConnection();
httpsURLConnection.setDoInput(true);
httpsURLConnection.setRequestMethod("GET");
inputStream = httpsURLConnection.getInputStream();
inputStreamReader = new InputStreamReader(inputStream, "utf-8");
bufferedReader = new BufferedReader(inputStreamReader);
buffer = new StringBuffer();
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return buffer.toString();
}
/**
* 获取全国各个省市的确诊、死亡和治愈人数
*
* @return
*/
public static String getAreaStat() {
String url = "https://ncov.dxy.cn/ncovh5/view/pneumonia";
String htmlResult = "";
try {
htmlResult = httpRequset(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(htmlResult);
// 正则获取数据
// 因为html的数据格式看着就像json格式,所以我们正则获取json
String reg = "window.getAreaStat = (.*?)\\}(?=catch)";
Pattern totalPattern = Pattern.compile(reg);
Matcher totalMatcher = totalPattern.matcher(htmlResult);
String result = "";
if (totalMatcher.find()) {
result = totalMatcher.group(1);
System.out.println(result);
// 各个省市的是一个列表List,如果想保存到数据库中,要遍历结果,下面是demo
JSONArray array = JSONArray.parseArray(result);
DBUTIL l = new DBUTIL();
try {
Connection con = l.lin("VData");
Statement stmt = con.createStatement();
Date date = new Date();//获得系统时间.
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss" );
String nowTime = sdf.format(date);
for (int i = 0; i <= 30; i++) {
com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject
.parseObject(array.getString(i));
String provinceName = jsonObject.getString("provinceName");
String cityname1 = " ";
String confirmed = jsonObject.getString("confirmedCount");
String cured = jsonObject.getString("curedCount");
String dead = jsonObject.getString("deadCount");
String suspect = jsonObject.getString("suspectedCount");
stmt.executeUpdate("insert into info2(Date,Province,City,Confirmed_num,Yisi_num,Cured_num,Dead_num) values('"+ nowTime + "','"+ provinceName + "','"+ cityname1 + "','" + confirmed + "','" + suspect +"','" + cured +"','" + dead +"')");
JSONArray array2 = jsonObject.getJSONArray("cities");
for (int j = 0; j < array2.size(); j++) {
com.alibaba.fastjson.JSONObject jsonObject2 = com.alibaba.fastjson.JSONObject
.parseObject(array2.getString(j));
String provinceName2 = jsonObject.getString("provinceName");
String cityname = jsonObject2.getString("cityName");
String confirmed2 = jsonObject2.getString("confirmedCount");
String cured2 = jsonObject2.getString("curedCount");
String dead2 = jsonObject2.getString("deadCount");
String suspect2 = jsonObject2.getString("suspectedCount");
stmt.executeUpdate("insert into info3(Date,Province,City,Confirmed_num,Yisi_num,Cured_num,Dead_num) values('"+ nowTime + "','"+ provinceName2 + "','"+ cityname + "','" + confirmed2 + "','" + suspect2 +"','" + cured2 +"','" + dead2 +"')");
}
}
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
/**
* 获取全球各个国家的确诊、死亡和治愈人数
* @return
*/
public static String getListByCountryTypeService2() {
String url = "https://ncov.dxy.cn/ncovh5/view/pneumonia";
String htmlResult = "";
try {
htmlResult = httpRequset(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(htmlResult);
// 正则获取数据
// 因为html的数据格式看着就像json格式,所以我们正则获取json
String reg = "window.getListByCountryTypeService2true = (.*?)\\}(?=catch)";
Pattern totalPattern = Pattern.compile(reg);
Matcher totalMatcher = totalPattern.matcher(htmlResult);
String result = "";
if (totalMatcher.find()) {
result = totalMatcher.group(1);
System.out.println(result);
// 各个省市的是一个列表List,如果想保存到数据库中,要遍历结果,下面是demo
JSONArray array = JSONArray.parseArray(result);
DBUTIL l = new DBUTIL();
try {
Connection con = l.lin("VData");
Statement stmt = con.createStatement();
Date date = new Date();//获得系统时间.
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd hh:mm:ss" );
String nowTime = sdf.format(date);
for (int i = 0; i <array.size(); i++) {
com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject
.parseObject(array.getString(i));
String continents =jsonObject.getString("continents");
String provinceName = jsonObject.getString("provinceName");
String confirmed = jsonObject.getString("confirmedCount");
String cured = jsonObject.getString("curedCount");
String dead = jsonObject.getString("deadCount");
String suspect = jsonObject.getString("suspectedCount");
stmt.executeUpdate("insert into info4(Date,Continents,Province,Confirmed_num,Yisi_num,Cured_num,Dead_num) values('"+ nowTime + "','"+ continents + "','"+ provinceName + "','" + confirmed + "','" + suspect +"','" + cured +"','" + dead +"')");
}
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
}
然后通过调取数据库数据进行图标和列表展示,效果如图。

移动端连接远程数据库实现数据查询展示

| 日期 | 起始时间 | 结束时间 | 活动 | 备注 |
| 3.17 | 14:00 | 15:30 | 听课 | |
| 15:40 | 18:00 | 编程 | 爬取数据并入库 | |
| 19:00 | 20:30 | 看视频 | 学习云服务器的构建 | |
| 3.18 | 13:00 | 18:00 | 学习+跟做 | 一边看视频一变创建自己的服务器 |
| 19:00 | 20:00 | 配置服务器 | 未完成配置 | |
| 3.19 | 14:30 | 15:30 | 配置服务器 | 完成基本配置与访问 |
| 15:50 | 18:30 | 安装数据库 | 失败 | |
| 19:30 | 20:00 | 学习 | 看视频,决定放弃云服务器 | |
| 3.20 | 19:00 | 22:00 | 配环境 | 内网穿透实现其他客户端的访问 |
| 3.21 | 7:00 | 10:00 | 编程 | 编写app项目 |
| 10:10 | 11:30 | 编程 | 建立app与数据库间的链接 |

浙公网安备 33010602011771号