信息领域热词分析05(eclipse实现基本功能)
(1) 项目名称:信息化领域热词分类分析及解释
(2) 功能设计:
1)
数据采集:要求从定期自动从网络中爬取信息领域的相关热
词;
2)
数据清洗:对热词信息进行数据清洗,并采用自动分类技术
生成信息领域热词目录,;
3)
热词解释:针对每个热词名词自动添加中文解释(参照百度
百科或维基百科);
4)
热词引用:并对近期引用热词的文章或新闻进行标记,生成
超链接目录,用户可以点击访问;
5)
数据可视化展示:
① 用字符云或热词图进行可视化展示;
② 用关系图标识热词之间的紧密程度。6) 数据报告:可将所有热词目录和名词解释生成 WORD 版报告
形式导出。
今天完成了项目的一些基本功能。
主菜单:
main.html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>信息化热词分析</title>
<meta name="renderer" content="webkit|ie-comp|ie-stand" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="stylesheet" type="text/css" href="resource/layui/css/layui.css">
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
<script src="resource/layui/layui.js"></script>
<style>
iframe{
width: 100%;
height: 100%;
}
</style>
<script>
layui.use('element', function () {
var $ = layui.jquery;
var element = layui.element; //Tab的切换功能,切换事件监听等,需要依赖element模块
//触发事件
var active = {
//在这里给active绑定几项事件,后面可通过active调用这些事件
tabAdd: function (url, id, name) {
//新增一个Tab项 传入三个参数,分别对应其标题,tab页面的地址,还有一个规定的id,是标签中data-id的属性值
//关于tabAdd的方法所传入的参数可看layui的开发文档中基础方法部分
element.tabAdd('demo', {
title: name,
content: '<iframe data-frameid="' + id + '" scrolling="auto" frameborder="0" src="' + url +'" style="width:100%;height:99%;"></iframe>',
id: id //规定好的id
})
CustomRightClick(id); //给tab绑定右击事件
FrameWH(); //计算ifram层的大小
},
tabChange: function (id) {
//切换到指定Tab项
element.tabChange('demo', id); //根据传入的id传入到指定的tab项
},
tabDelete: function (id) {
element.tabDelete("demo", id);//删除
}
, tabDeleteAll: function (ids) {//删除所有
$.each(ids, function (i, item) {
element.tabDelete("demo", item); //ids是一个数组,里面存放了多个id,调用tabDelete方法分别删除
})
}
};
//当点击有site-demo-active属性的标签时,即左侧菜单栏中内容 ,触发点击事件
$('.site-demo-active').on('click', function () {
var dataid = $(this);
//这时会判断右侧.layui-tab-title属性下的有lay-id属性的li的数目,即已经打开的tab项数目
if ($(".layui-tab-title li[lay-id]").length <= 0) {
//如果比零小,则直接打开新的tab项
active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
} else {
//否则判断该tab项是否以及存在
var isData = false; //初始化一个标志,为false说明未打开该tab项 为true则说明已有
$.each($(".layui-tab-title li[lay-id]"), function () {
//如果点击左侧菜单栏所传入的id 在右侧tab项中的lay-id属性可以找到,则说明该tab项已经打开
if ($(this).attr("lay-id") == dataid.attr("data-id")) {
isData = true;
}
})
if (isData == false) {
//标志为false 新增一个tab项
active.tabAdd(dataid.attr("data-url"), dataid.attr("data-id"), dataid.attr("data-title"));
}
}
//最后不管是否新增tab,最后都转到要打开的选项页面上
active.tabChange(dataid.attr("data-id"));
});
function CustomRightClick(id) {
//取消右键 rightmenu属性开始是隐藏的 ,当右击的时候显示,左击的时候隐藏
$('.layui-tab-title li').on('contextmenu', function () { return false; })
$('.layui-tab-title,.layui-tab-title li').click(function () {
$('.rightmenu').hide();
});
//桌面点击右击
$('.layui-tab-title li').on('contextmenu', function (e) {
var popupmenu = $(".rightmenu");
popupmenu.find("li").attr("data-id", id); //在右键菜单中的标签绑定id属性
//判断右侧菜单的位置
l = ($(document).width() - e.clientX) < popupmenu.width() ? (e.clientX - popupmenu.width()) : e.clientX;
t = ($(document).height() - e.clientY) < popupmenu.height() ? (e.clientY - popupmenu.height()) : e.clientY;
popupmenu.css({ left: l, top: t }).show(); //进行绝对定位
//alert("右键菜单")
return false;
});
}
$(".rightmenu li").click(function () {
//右键菜单中的选项被点击之后,判断type的类型,决定关闭所有还是关闭当前。
if ($(this).attr("data-type") == "closethis") {
//如果关闭当前,即根据显示右键菜单时所绑定的id,执行tabDelete
active.tabDelete($(this).attr("data-id"))
} else if ($(this).attr("data-type") == "closeall") {
var tabtitle = $(".layui-tab-title li");
var ids = new Array();
$.each(tabtitle, function (i) {
ids[i] = $(this).attr("lay-id");
})
//如果关闭所有 ,即将所有的lay-id放进数组,执行tabDeleteAll
active.tabDeleteAll(ids);
}
$('.rightmenu').hide(); //最后再隐藏右键菜单
})
function FrameWH() {
var h = $(window).height() - 41 - 10 - 60 - 10 - 44 - 10;
$("iframe").css("height", h + "px");
}
$(window).resize(function () {
FrameWH();
})
});
</script>
</head>
<body class="layui-layout-body">
<div class="layui-layout layui-layout-admin">
<div class="layui-header">
<div class="layui-logo">信息化领域热词分类分析</div>
</div>
<div class="layui-side layui-bg-black">
<div class="layui-side-scroll">
<!-- 左侧导航区域(可配合layui已有的垂直导航) -->
<ul class="layui-nav layui-nav-tree" lay-filter="test">
<li class="layui-nav-item layui-nav-itemed">
<a href="#" data-url="hot.html" data-id="1" data-title="热词图" class="site-demo-active" data-type="tabAdd">热词图</a>
</li>
<li class="layui-nav-item">
<a href="#" data-url="explain.html" data-id="2" data-title="热词解释" class="site-demo-active" data-type="tabAdd">热词解释</a>
</li>
<li class="layui-nav-item"><a href="#" data-url="link.html" data-id="3" data-title="热词相关文章" class="site-demo-active" data-type="tabAdd">热词相关文章</a></li>
<li class="layui-nav-item"><a href="#">生成word</a></li>
</ul>
</div>
</div>
<div class="layui-body">
<div class="layui-tab layui-tab-brief" lay-filter="demo" lay-allowclose="true">
<ul class="layui-tab-title">
</ul>
<ul class="rightmenu" style="display: none;position: absolute;">
<li data-type="closethis">关闭当前</li>
<li data-type="closeall">关闭所有</li>
</ul>
<div class="layui-tab-content"></div>
</div>
</div>
<!-- tab-->
<div class="layui-footer">
<!-- 底部固定区域 -->
信息领域热词分类分析
</div>
</div>
</body>
</html>
热词云图:
hot.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>热词可视图</title>
<script src="js/jquery-1.11.3.min.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
</head>
<body>
<div style="position:absolute;left:400px;top:20px;">
<div id="main" style="width: 1000px;height:400px;"></div>
</div>
</body>
<script type="text/javascript">
var myChart = echarts.init(document.getElementById('main'));
var statisticsData =[];
myChart.showLoading();
$.ajax({
type : "post",
async : true, //异步请求(同步请求将会锁住浏览器,其他操作须等请求完成才可执行)
url : "Servlet?method=find", //请求发送到Servlet
data : {},
dataType : "json", //返回数据形式为json
//7.请求成功后接收数据name+num两组数据
success : function(result) {
//result为服务器返回的json对象
if (result) {
//8.取出数据存入数组
for (var i = 0; i <result.length; i++) {
var statisticsObj = {name:'',value:''}; //因为ECharts里边需要的的数据格式是这样的
statisticsObj.name =result[i].hotwords;
statisticsObj.value =result[i].num;
//alert( statisticsObj.name);
//alert(statisticsObj.value);
statisticsData.push(statisticsObj);
}
//alert(statisticsData);
//把拿到的异步数据push进我自己建的数组里
myChart.hideLoading();
//9.覆盖操作-根据数据加载数据图表
var z1_option = {
title: {
text: '最新热词统计'
},
tooltip: {},
series: [{
type : 'wordCloud', //类型为字符云
shape:'smooth', //平滑
gridSize : 8, //网格尺寸
size : ['50%','50%'],
//sizeRange : [ 50, 100 ],
rotationRange : [-45, 0, 45, 90], //旋转范围
textStyle : {
normal : {
fontFamily:'微软雅黑',
color: function() {
return 'rgb(' +
Math.round(Math.random() * 255) +
', ' + Math.round(Math.random() * 255) +
', ' + Math.round(Math.random() * 255) + ')'
}
},
emphasis : {
shadowBlur : 5, //阴影距离
shadowColor : '#333' //阴影颜色
}
},
left: 'center',
top: 'center',
right: null,
bottom: null,
width:'100%',
height:'100%',
data:statisticsData
}]
};
myChart.setOption(z1_option, true);
}
},
})
</script>
</html>
热词解释列表
explain.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>热词名词解释</title>
<link rel="stylesheet" type="text/css" href="resource/layui/css/layui.css">
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
<script src="resource/layui/layui.js"></script>
<script>
layui.use(['laydate','table'], function () {
var table = layui.table;
</script>
</head>
<body>
<div class="layui-card-body ">
<table class="layui-table layui-form">
<thead>
<tr>
<th width="70">热词</th>
<th width="380">热词解释</th>
<th width="100">点击进入</th>
</tr>
</thead>
<tbody class="x-cate" id="test">
</tbody>
</table>
</div>
</body>
<script type="text/javascript">
var test=document.getElementById("test");
$.ajax({
url:"Servlet?method=find2",
datatype:'json',
type:'post',
async:true,
success:function(data){
var p=eval("("+data+")");
var tt=p;
var str="";
for(var i=0;i<tt.length;i++){
str+="<tr cate-id='0' fid='0'>"+"<td>"+tt[i].hotwords+"</td>"+
"<td>"+tt[i].explain+"</td>"+
"<td><a target='_blank' href="+tt[i].website+">点击进入</a></td>"+"<tr>";
}
test.innerHTML=str;
},
error:function(arg1){
alert("数据加载失败");
console.log(arg1);
}
})
</script>
</html>
热词相关新闻列表:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>热词名词解释</title>
<link rel="stylesheet" type="text/css" href="resource/layui/css/layui.css">
<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script src="js/echarts.js"></script>
<script src="js/worldcloud.js"></script>
<script src="resource/layui/layui.js"></script>
<script>
layui.use(['laydate','table'], function () {
var table = layui.table;
});
</script>
</head>
<body>
<div class="layui-card-body ">
<table class="layui-table layui-form">
<thead>
<tr>
<th width="70">热词</th>
<th width="380">相关新闻</th>
<th width="100">新闻链接</th>
</tr>
</thead>
<tbody class="x-cate" id="test">
</tbody>
</table>
</div>
</body>
<script type="text/javascript">
var test=document.getElementById("test");
$.ajax({
url:"Servlet?method=link",
datatype:'json',
type:'post',
async:true,
success:function(data){
var p=eval("("+data+")");
var tt=p;
var str="";
for(var i=0;i<tt.length;i++){
str+="<tr cate-id='0' fid='0'>"+"<td>"+tt[i].hotwords+"</td>"+
"<td>"+tt[i].title+"</td>"+
"<td><a target='_blank' href="+tt[i].href+">点击进入</a></td>"+"<tr>";
}
test.innerHTML=str;
},
error:function(arg1){
alert("数据加载失败");
console.log(arg1);
}
})
</script>
</html>
dao层:
package dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import bean.entity;
public class Dao {
public List<entity> list1(){
List<entity> list =new ArrayList<entity>();
try {
Connection conn =Util.getConnection();
// 添加图书信息的SQL语句
String sql = "select * from final_hotword";
// 获取Statement
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
entity book = new entity();
book.setHotwords(resultSet.getString("hotname"));
book.setNum(resultSet.getString("num"));
list.add(book);
}
resultSet.close();
statement.close();
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
return list;
}
//
public List<entity> list2(){
List<entity> list =new ArrayList<entity>();
try {
Connection conn = Util.getConnection();
// 添加图书信息的SQL语句
String sql = "select * from website";
// 获取Statement
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
entity book = new entity();
book.setHotwords(resultSet.getString("hot"));
book.setExplain(resultSet.getString("hotexplent"));
book.setWebsite(resultSet.getString("link"));
list.add(book);
}
resultSet.close();
statement.close();
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
return list;
}
public List<entity> list3(){
List<entity> list =new ArrayList<entity>();
try {
Connection conn = Util.getConnection();
// 添加图书信息的SQL语句
String sql = "select * from Link";
// 获取Statement
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
while (resultSet.next()) {
entity book = new entity();
book.setHotwords(resultSet.getString("wordname"));
book.setTitle(resultSet.getString("title"));
book.setHref(resultSet.getString("href"));
list.add(book);
}
resultSet.close();
statement.close();
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
return list;
}
}
bean层:
package bean;
public class entity {
public String hotwords;
public String num;
public String explain;
public String website;
public String title;
public String href;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public String getHotwords() {
return hotwords;
}
public void setHotwords(String hotwords) {
this.hotwords = hotwords;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getExplain() {
return explain;
}
public void setExplain(String explain) {
this.explain = explain;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
public entity(String hotwords, String num, String explain, String website, String title, String href) {
super();
this.hotwords = hotwords;
this.num = num;
this.explain = explain;
this.website = website;
this.title = title;
this.href = href;
}
public entity() {
super();
}
}
servlet层:
package servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.google.gson.Gson;
import bean.entity;
import dao.Dao;
/**
* Servlet implementation class servlet
*/
@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Dao dao1=new Dao();
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet() {
super();
// TODO Auto-generated constructor stub
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String method=request.getParameter("method");
System.out.println(method);
if("find".equals(method))
{
find(request, response);
}else if("find2".equals(method))
{
find2(request, response);
}
else if("link".equals(method)) {
getLink(request, response);
}
}
private void find(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
List<entity> list =new ArrayList<entity>();
HttpSession session=request.getSession();
String buy_nbr=(String) session.getAttribute("userInfo");
entity book = new entity();
List<entity> list2=dao1.list1();
System.out.println(list2.size());
// String buy_nbr=(String) session.getAttribute("userInfo");
// System.out.println(buy_nbr);
Gson gson2 = new Gson();
String json = gson2.toJson(list2);
System.out.println(json);
// System.out.println(json);
// System.out.println(json.parse);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(json);
}
private void find2(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
List<entity> list =new ArrayList<entity>();
HttpSession session=request.getSession();
String buy_nbr=(String) session.getAttribute("userInfo");
entity book = new entity();
List<entity> list2=dao1.list2();
System.out.println(list2.size());
// String buy_nbr=(String) session.getAttribute("userInfo");
// System.out.println(buy_nbr);
Gson gson2 = new Gson();
String json = gson2.toJson(list2);
System.out.println(json);
// System.out.println(json);
// System.out.println(json.parse);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(json);
}
private void getLink(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
List<entity> list =new ArrayList<entity>();
HttpSession session=request.getSession();
String buy_nbr=(String) session.getAttribute("userInfo");
entity book = new entity();
List<entity> list2=dao1.list3();
System.out.println(list2.size());
// String buy_nbr=(String) session.getAttribute("userInfo");
// System.out.println(buy_nbr);
Gson gson2 = new Gson();
String json = gson2.toJson(list2);
System.out.println(json);
// System.out.println(json);
// System.out.println(json.parse);
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(json);
}
}
项目结构:

界面:



之后继续进行生成word。

浙公网安备 33010602011771号