抓取网页数据违法吗(动态获取SIS系统传过来的小指标参数是怎样的? )
优采云 发布时间: 2022-04-12 05:05抓取网页数据违法吗(动态获取SIS系统传过来的小指标参数是怎样的?
)
最近在开发过程中接到一个小任务,就是PC端需要动态获取SIS系统传过来的小指标参数,以达到不定时刷新的效果。说到不定时刷新,大家第一时间就会想到ajax异步刷新,因为真的没有比这更简单的了。
SIS系统本身有很多指标。数据抓取需要时时同步最新的数据库数据,并且需要动态获取指标名称显示,并根据单元的分组动态创建显示表(即有几个单元创建几个显示器。表)。
需求明确,根据前端设计的html页面,先转换成jsp页面。然后创建访问 servlet。jsp页面提取动态表的内容并拼接到servlet中,而jsp页面只是一个简单的ajax请求,代码如下:
function page_click(){
$.ajax({
type : "post",
url : "/CdGetDtSisdatasServlet/?eventtype=sisDatas",
dataType:"html",
async: false,
data:{},
success : function(data,textStatus){
//alert("成功");
$("#menu").html(data);
},
error:function(data){
alert("出内部错:"+data);
}
});
}
成功后直接返回html代码,显示转换后的数据。为了定时自动刷新,js写了一个定时函数:前端jsp页面基本完成。
查看 servlet 实现。
servlet 中的实现也比较简单。首先根据需求将数据库中的字段动态组装成可以接收sis系统的合法字段,然后动态获取数据。然后根据单元号动态插入数据,分别存储在一个hashmap集合中。然后动态封装创建表的方法,部分代码块如下:
{.......
htmldata.append("<p>"+v2+"\r\n");
htmldata.append("
"+v3+"\r\n");
htmldata.append("
"+v4+"\r\n");
htmldata.append("
"+v5+"\r\n");
htmldata.append("
"+v6+"\r\n");
htmldata.append(" \r\n");
}
htmldata.append("\r\n");
return htmldata.toString();
...........</p>
这里简单的通过一个StrinBuffer组装html代码,这样就可以用最简单的方式实现动态创建表,最后在main方法中调用动态创建表的方法,最后
String htmltoString=htmldata.toString();
response.getWriter().write(htmltoString);
response.getWriter().flush();
return htmltoString;
这个小功能基本完成,最后附上一张效果图。
本案例是一个简单的异步刷新案例,希望对初学者有所帮助。