日期:2020.02.04

博客期:143

星期二

   【本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)】

  所有相关跳转:

  a.【简单准备

  b.【云图制作+数据导入

  c.【拓扑数据

  d.【数据修复

  e.【解释修复+热词引用

   f.【JSP演示+页面跳转

  g.【热词分类+目录生成】(本期博客)

  h.【热词关系图+报告生成

  i . 【App制作

  j . 【安全性改造


  如下图,我已经解决的需求是标黄的部分,剩余需求就只有 热词分类、目录生成、热词关系图展示、数据报告导出 四部分了,这些需求是最紧要完成的,呼~撸起袖子加油干!

    

   1、热词分类

    老师说要参照各大平台的分类,我就直接按照博客园的分类来吧(我实在看不懂那些机器学习是怎么实现的,连入门的门槛都远远不及)!如下图,可以看到 博客园的新闻将新闻分成了如下几类:互联网类、IT业界类、软件开发类、开源类、电脑硬件类、游戏类、创业类、手机相关类、科学类、其他类。我就根据这几类将对应类新闻里爬出来的数据进行对应类的划分。(看来又要重新爬数据了啊)

    开始爬之前事先说明一下,这次改动应该是最后一次改动了,另外我发现每一类新闻都有 100 页,这...相当于每一类都有,所以不保证有误差的存在,另外为了减少数据量,我打算将 “频数为15” 这一条件上升到 “频数为20”,不然怎么爬的完?我先预算一下,今天和明天一起写这个博客,另外明天的话,就再写一份总结性的博客,这个小目标就算完结吧!当然最后可能会加入微信小程序部分或者APP部分,到时候再说。

    根据这10类新闻,我们总共要爬取些什么数据呢?

    首先,通过带有 header 的 request 方式爬取 https://news.cnblogs.com/ 这一初始链接,要爬以上 10 类新闻的链接,再爬取类中封装链接的构造,并开启新的爬取,对应每一类数据给爬到的热词信息后面追加一个“热词类型”的标签,这需要我们改造 KeyWords 类,向 KeyWords 类中加入 kind 属性,改写 __toString() 成员函数。之后改造调用过 KeyWords 类的地方。(News不需要)

    关于分类页面的构造方法:

      首先是原新闻网址:https://news.cnblogs.com/

      其次,以 “互联网” 为例:https://news.cnblogs.com/n/c1101

      然后是第 100 页的地址:https://news.cnblogs.com/n/c1101?page=100

      很容易的判断到是在原网址的基础上加入对应 互联网的 a 标签上的 href 链接,需要将数据加载到一起来组成爬取链接!

    但是爬的过程中发现了问题,就是我爬不到对应的分类链接,既然这样,我只能人工地获取它们的链接了,就10条数据无所谓了,本来因为懒想让网页帮我做的,看来是博客园让我勤快的。哈哈哈!

    对应链接:

      互联网类:https://news.cnblogs.com/n/c1101

      IT业界类:https://news.cnblogs.com/n/c1102

      软件开发类:https://news.cnblogs.com/n/c1103

      开源类:https://news.cnblogs.com/n/c1109

      电脑硬件类:https://news.cnblogs.com/n/c1111

      游戏类:https://news.cnblogs.com/n/c1110

      创业类:https://news.cnblogs.com/n/c1112

      手机相关类:https://news.cnblogs.com/n/c1113

      科学类:https://news.cnblogs.com/n/c1114

      其他类:https://news.cnblogs.com/n/c1199

    在 Surapity 类 中建立字典,存储类型的名称和对应链接。

    爬取时间较长,从下午4:51到现在第2天的1:44,过程曲折且难以简言明之。

    途中遇到好几个网站会使爬虫程序终止,比如 其他类的 Apple Watch UI动效解析 ,呜哇~试一次,卡一次。程序员的痛苦莫过于此!!!

    统计基础数据共计 17469 条 数据!文件大小约为 1.96 M !

    现在开始制作数据表:(先修改 fileR.py)

  1. import codecs
  2.  
  3. def makeSql():
  4. file_path = "../../testFile/frc/words_sql.txt"
  5. f = codecs.open(file_path, "w+", 'utf-8')
  6. f.write("")
  7. f.close()
  8.  
  9. fw = open("../../testFile/frc/word.txt", mode='r', encoding='utf-8')
  10. tmp = fw.readlines()
  11.  
  12. num = tmp.__len__()
  13.  
  14. for i in range(0,num):
  15. group = tmp[i].split("\t")
  16. group[0] = "'" + group[0] + "'"
  17. group[3] = "'" + group[3][0:group[3].__len__()-1] + "'"
  18. f = codecs.open(file_path, "a+", 'utf-8')
  19. f.write("Insert into words values ("+group[0]+","+group[1]+",'"+group[2]+"',"+group[3]+",'"+group[4]+"');"+"\n")
  20. f.close()
  21.  
  22. makeSql()

fileR.py

    执行并按照之前的方法导入数据,这里博主因为使用电脑管家清理了一下C盘,然后 Navicat就崩掉了,真的崩了(建立不了查询了,这个之后有解决方法的话,我再写一期博客吧!)!所以,不搞虚的,直接用文本导入了!

    建立 keywords 表(或视图)的方法同上上期的博客,那样获取每一个热词的数量!

  1. CREATE TABLE keywords
  2. AS
  3. (
  4. SELECT
  5. word AS word,
  6. SUM(num) AS num
  7. FROM
  8. words
  9. GROUP BY word
  10. ORDER BY num
  11. DESC
  12. )

CreateKeywordsTable.sql

    

    哈哈哈哈!热词频数过万了呢!希望我的电脑还能撑住,继续爬!(但是现在已经2点了,先定个2个小时的闹钟,拓扑数据让它自己爬着)

    对于 WebConnector 类,我要着重说一下,我本次爬取将此代码注释掉了:

  1. # 这句话处理以后,就将带有 “年”、“月”、“日” 字眼的语句以及之后的语句全部清除掉了,当时是旨在消除不必要的解释部分,但现在看来没必要!多多益善嘛!
  2. tpl = StrSpecialDealer.ut_date(tpl)

    早上醒来发现大问题——电脑自己休眠了,唉~希望自己能够吃一堑长一智吧!

    在电脑熬夜干爬虫的时候尽力将休眠关闭,在设置中如下:

    拓扑数据也完成了,大约又历时 5 个小时,关键是在电脑爬虫时我还不能用电脑干其他的(尤其是截图软件,运行的话,爬虫程序一准给你崩停)

    终于有完整数据了,现在我们开始数据处理!

    根据不同分类将数据汇总和数据处理了(也就是说剩余没有Python的事情了),至此热词分类完毕。

  2、热词目录生成

    我们需要展示每一个分类的前10个数据,以此做成第一个页面。

    可以制作新的视图,也可以直接写大长 Sql 语句,我比较懒,就按长语句来了

  1. package com.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.sql.SQLException;
  5. import java.util.List;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.ServletOutputStream;
  9. import javax.servlet.annotation.WebServlet;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13.  
  14. import org.json.JSONArray;
  15. import org.json.JSONObject;
  16.  
  17. import com.dblink.basic.utils.SqlUtils;
  18. import com.dblink.basic.utils.sqlKind.MySql_s;
  19. import com.dblink.basic.utils.user.UserInfo;
  20. import com.dblink.bean.BeanGroup;
  21. import com.dblink.sql.DBLink;
  22.  
  23. @SuppressWarnings("unused")
  24. public class ServletForMoreInfo extends HttpServlet{
  25. /**
  26. *
  27. */
  28. private static final long serialVersionUID = 1L;
  29. //----------------------------------------------------------------------//
  30. public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
  31. {
  32. request.setCharacterEncoding("utf-8");
  33. response.setCharacterEncoding("utf-8");
  34. response.setContentType("application/json");
  35. response.setHeader("Cache-Control", "no-cache");
  36. response.setHeader("Pragma", "no-cache");
  37.  
  38. String kind = request.getParameter("kind");
  39.  
  40. JSONArray jsonArray = new JSONArray();
  41.  
  42. JSONObject jsonObj = new JSONObject();
  43.  
  44. DBLink dbLink = new DBLink(new SqlUtils(new MySql_s("rc"),new UserInfo("root","123456")));
  45. BeanGroup bg = null;
  46. try {
  47. bg = dbLink.getSelect("Select word As word , SUM(num) As num From ( Select * From words Where kind = '"+kind+"' ) Group By word Order By num DESC Limit 0,10 ").beans;
  48.  
  49. int leng = bg.size();
  50.  
  51. jsonObj.put("Length",leng);
  52.  
  53. jsonArray.put(jsonObj);
  54.  
  55. for(int i=0;i<leng;++i)
  56. {
  57. JSONObject jsonObject = new JSONObject();
  58. jsonObject.put("word",bg.get(i).get(0));
  59. jsonObject.put("num",bg.get(i).get(1));
  60. jsonArray.put(jsonObject);
  61. }
  62. } catch (SQLException e) {
  63. // Do Nothing ...
  64. }
  65. dbLink.free();
  66.  
  67. ServletOutputStream os = response.getOutputStream();
  68. os.write(jsonArray.toString().getBytes());
  69. os.flush();
  70. os.close();
  71. }
  72. //---------------------------------------------------------------------------------//
  73. }

ServletForMoreInfo.java

    如果你建立了对应 10 个分类的视图,你可以添加 Servlet 如下:(否则将视图名称替换成建立视图的Select语句)

  1. package com.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.sql.SQLException;
  5. import java.util.List;
  6.  
  7. import javax.servlet.ServletException;
  8. import javax.servlet.ServletOutputStream;
  9. import javax.servlet.annotation.WebServlet;
  10. import javax.servlet.http.HttpServlet;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletResponse;
  13.  
  14. import org.json.JSONArray;
  15. import org.json.JSONObject;
  16.  
  17. import com.dblink.basic.utils.SqlUtils;
  18. import com.dblink.basic.utils.sqlKind.MySql_s;
  19. import com.dblink.basic.utils.user.UserInfo;
  20. import com.dblink.bean.BeanGroup;
  21. import com.dblink.sql.DBLink;
  22.  
  23. @SuppressWarnings("unused")
  24. public class ServletForKindKeyWords extends HttpServlet{
  25. /**
  26. *
  27. */
  28. private static final long serialVersionUID = 1L;
  29. //----------------------------------------------------------------------//
  30. public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
  31. {
  32. request.setCharacterEncoding("utf-8");
  33. response.setCharacterEncoding("utf-8");
  34. response.setContentType("application/json");
  35. response.setHeader("Cache-Control", "no-cache");
  36. response.setHeader("Pragma", "no-cache");
  37.  
  38. String table = request.getParameter("table");
  39. String sql_rest = request.getParameter("sql");
  40.  
  41. JSONArray jsonArray = new JSONArray();
  42.  
  43. JSONObject jsonObj = new JSONObject();
  44.  
  45. DBLink dbLink = new DBLink(new SqlUtils(new MySql_s("rc"),new UserInfo("root","123456")));
  46. BeanGroup bg = null;
  47. try {
  48. bg = dbLink.getSelect("Select * From "+table+" "+sql_rest).beans;
  49.  
  50. int leng = bg.size();
  51.  
  52. int maxSize = dbLink.getSelect("Select * From "+table+" ").beans.size();
  53.  
  54. int page = maxSize%leng==0?(maxSize/30):(maxSize/30)+1;
  55.  
  56. jsonObj.put("Length",leng);
  57. jsonObj.put("MaxSize",maxSize);
  58. jsonObj.put("Page",page);
  59.  
  60. jsonArray.put(jsonObj);
  61.  
  62. for(int i=0;i<leng;++i)
  63. {
  64. JSONObject jsonObject = new JSONObject();
  65. jsonObject.put("word",bg.get(i).get(0));
  66. jsonObject.put("num",bg.get(i).get(1));
  67. jsonObject.put("exp",bg.get(i).get(2));
  68. jsonArray.put(jsonObject);
  69. }
  70. } catch (SQLException e) {
  71. // Do Nothing ...
  72. }
  73. dbLink.free();
  74.  
  75. ServletOutputStream os = response.getOutputStream();
  76. os.write(jsonArray.toString().getBytes());
  77. os.flush();
  78. os.close();
  79. }
  80. //---------------------------------------------------------------------------------//
  81. }

ServletForKindKeyWords.java

    然后制作 js 部分:

      先显示分类,然后利用套装形式进行数据载入:

  如果点击 获取本类更多热词,就可以跳转至本类页面!

  Like this:

  附加新 js 代码:

  1. function makePageToKind()
  2. {
  3. var Area = '';
  4. Area += '<div class="row">';
  5. Area += ' <div class="col-md-12">';
  6. Area += ' <h2>热词目录</h2>';
  7. Area += ' </div>';
  8. Area += '</div>';
  9. Area += '<hr />';
  10. Area += '<br>';
  11. Area += '<br>';
  12. Area += '<div id="MessageArea">';
  13. Area += '</div>';
  14. document.getElementById("page-inner").innerHTML = Area;
  15. madeAllKindP();
  16. }
  17. function madeAllKindP()
  18. {
  19. var Area = '';
  20. Area += '<div>';
  21. Area += ' <ul>';
  22. Area += ' <li>';
  23. Area += ' <b>互联网类<b>';
  24. Area += ' <div id="hlw"></div>';
  25. Area += ' </li>';
  26. Area += ' <li>';
  27. Area += ' <b>IT业界类<b>';
  28. Area += ' <div id="ityj"></div>';
  29. Area += ' </li>';
  30. Area += ' <li>';
  31. Area += ' <b>软件开发类<b>';
  32. Area += ' <div id="rjkf"></div>';
  33. Area += ' </li>';
  34. Area += ' <li>';
  35. Area += ' <b>开源类<b>';
  36. Area += ' <div id="ky"></div>';
  37. Area += ' </li>';
  38. Area += ' <li>';
  39. Area += ' <b>电脑硬件类<b>';
  40. Area += ' <div id="dnyj"></div>';
  41. Area += ' </li>';
  42. Area += ' <li>';
  43. Area += ' <b>游戏类<b>';
  44. Area += ' <div id="yx"></div>';
  45. Area += ' </li>';
  46. Area += ' <li>';
  47. Area += ' <b>创业类<b>';
  48. Area += ' <div id="cy"></div>';
  49. Area += ' </li>';
  50. Area += ' <li>';
  51. Area += ' <b>手机相关类<b>';
  52. Area += ' <div id="sjxg"></div>';
  53. Area += ' </li>';
  54. Area += ' <li>';
  55. Area += ' <b>科学类<b>';
  56. Area += ' <div id="kx"></div>';
  57. Area += ' </li>';
  58. Area += ' <li>';
  59. Area += ' <b>其他类<b>';
  60. Area += ' <div id="qt"></div>';
  61. Area += ' </li>';
  62. Area += ' </ul>';
  63. Area += '</div>';
  64. document.getElementById("MessageArea").innerHTML = Area;
  65. makeNextStepOfGroupK("互联网类");
  66. makeNextStepOfGroupK("IT业界类");
  67. makeNextStepOfGroupK("软件开发类");
  68. makeNextStepOfGroupK("开源类");
  69. makeNextStepOfGroupK("电脑硬件类");
  70. makeNextStepOfGroupK("游戏类");
  71. makeNextStepOfGroupK("创业类");
  72. makeNextStepOfGroupK("手机相关类");
  73. makeNextStepOfGroupK("科学类");
  74. makeNextStepOfGroupK("其他类");
  75. }
  76. function getKindWordsByKindName(word)
  77. {
  78. var id_t = "";
  79. if(word=="互联网类")
  80. id_t = "hlw";
  81. else if(word=="IT业界类")
  82. id_t = "ityj";
  83. else if(word=="软件开发类")
  84. id_t = "rjkf";
  85. else if(word=="开源类")
  86. id_t = "ky";
  87. else if(word=="电脑硬件类")
  88. id_t = "dnyj";
  89. else if(word=="游戏类")
  90. id_t = "yx";
  91. else if(word=="创业类")
  92. id_t = "cy";
  93. else if(word=="手机相关类")
  94. id_t = "sjxg";
  95. else if(word=="科学类")
  96. id_t = "kx";
  97. else if(word=="其他类")
  98. id_t = "qt";
  99. return id_t;
  100. }
  101. function makeNextStepOfGroupK(word_t)
  102. {
  103. var xmlHttp = null;
  104. try{
  105. xmlHttp = new XMLHttpRequest();
  106. } catch (e1) {
  107. try {
  108. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  109. } catch (e2) {
  110. alert("Your browser does not support XMLHTTP!");
  111. return;
  112. }
  113. }
  114. xmlHttp.onreadystatechange = function() {
  115. if (xmlHttp.readyState == 4) {
  116. if (xmlHttp.status == 200)
  117. {
  118. var Area = "&nbsp;&nbsp;";
  119. s = xmlHttp.responseText;
  120. var InformationSet = eval('('+s+')');
  121. var leng = InformationSet[0].Length;
  122.  
  123. var kindness = InformationSet[0].KindNess;
  124.  
  125. for(var i=1;i<=leng;++i)
  126. {
  127. var word_s = InformationSet[i].word;
  128. var num = InformationSet[i].num;
  129. Area += "&nbsp;&nbsp;";
  130. Area += "<a href='#' title='在本类型中引用次数:"+num+"' onclick='toSomeWhere(\""+word_s+"\")'>"+word_s+"</a>";
  131. Area += "&nbsp;&nbsp;";
  132. }
  133. Area += "&nbsp;&nbsp;";
  134. Area += "&nbsp;&nbsp;";
  135. Area += "<a href='#' onclick='makePageToOneKind(\""+kindness+"\")'/>获取本类更多热词...</a>";
  136. Area += "&nbsp;&nbsp;";
  137. Area += "&nbsp;&nbsp;";
  138.  
  139. var id_t = getKindWordsByKindName(kindness);
  140. document.getElementById(id_t).innerHTML = Area;
  141. }
  142. }
  143. };
  144. var url ="../com/servlet/ServletForMoreInfo";
  145. var server = "kind="+word_t;
  146.  
  147. xmlHttp.open("POST", url, true);
  148. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  149. xmlHttp.send(server);
  150. }
  151. function makePageToOneKind(kind)
  152. {
  153. var Area = '';
  154. Area += '<div class="row">';
  155. Area += ' <div class="col-md-12">';
  156. Area += ' <h2>'+kind+'</h2>';
  157. Area += ' </div>';
  158. Area += '</div>';
  159. Area += '<hr />';
  160. Area += '<br>';
  161. Area += '<div style="background:rgb(0,153,255);margin-left:20px;margin-right:20px;height:25px;">';
  162. Area += ' <div style="margin-left:10px;margin-right:10px;margin-top:5px;margin-bottom:5px;">';
  163. Area += ' <b style="float:left;">热词表</b>';
  164. Area += ' <div style="float:right;">';
  165. Area += ' <select id="sty" onchange="simpleReset_Kind(\''+kind+'\')">';
  166. Area += ' <option value="0" selected>按照词频顺序</option>';
  167. Area += ' <option value="1">按照字母表顺序</option>';
  168. Area += ' </select>';
  169. Area += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
  170. Area += ' <select id="order" onchange="simpleReset_Kind(\''+kind+'\')">';
  171. Area += ' <option value="0" selected>降序</option>';
  172. Area += ' <option value="1">增序</option>';
  173. Area += ' </select>';
  174. Area += '&nbsp;&nbsp;';
  175. Area += ' </div>';
  176. Area += ' </div>';
  177. Area += '</div>';
  178. Area += '<br>';
  179. Area += '<br>';
  180. Area += '<div id="MessageArea">';
  181. Area += '</div>';
  182. document.getElementById("page-inner").innerHTML = Area;
  183. simpleReset_Kind(kind);
  184. }
  185. function simpleReset_Kind(kind)
  186. {
  187. wordPage = 1;
  188. resetAndFresh_Kind(kind);
  189. }
  190. function XReset_Kind(p,kind)
  191. {
  192. wordPage = p;
  193. wordPage = parseInt(""+wordPage);
  194. resetAndFresh_Kind(kind);
  195. }
  196. function makeSurePage_Kind(kind)
  197. {
  198. wordPage = document.getElementById("selPage").value;
  199. wordPage = parseInt(""+wordPage);
  200. resetAndFresh_Kind(kind);
  201. }
  202. function resetAndFresh_Kind(kind)
  203. {
  204. var sty = document.getElementById("sty").value;
  205. var order = document.getElementById("order").value;
  206. var xmlHttp = null;
  207. try{
  208. xmlHttp = new XMLHttpRequest();
  209. } catch (e1) {
  210. try {
  211. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  212. } catch (e2) {
  213. alert("Your browser does not support XMLHTTP!");
  214. return;
  215. }
  216. }
  217. xmlHttp.onreadystatechange = function() {
  218. if (xmlHttp.readyState == 4) {
  219. if (xmlHttp.status == 200)
  220. {
  221. var Area = "";
  222.  
  223. s = xmlHttp.responseText;
  224. var InformationSet = eval('('+s+')');
  225. var leng = InformationSet[0].Length;
  226. var max = InformationSet[0].MaxSize;
  227. var pageNum = InformationSet[0].Page;
  228. var kind = InformationSet[0].KindNess;
  229.  
  230. Area += "<table class='WhatATable' style='margin-left:200px;float:left;'>";
  231. Area += "<tr>";
  232. Area += "<th style='width:100px;'>热词</th>";
  233. Area += "<th style='width:100px;'>词频</th>";
  234. Area += "<th style='width:100px;'>详细信息链接</th>";
  235. Area += "</tr>";
  236. if(leng<10)
  237. {
  238. for (var i=1;i<=leng;++i)
  239. {
  240. Area += "<tr>";
  241. Area += " <td>";
  242. Area += InformationSet[i].word;
  243. Area += " </td>";
  244. Area += " <td>";
  245. Area += InformationSet[i].num;
  246. Area += " </td>";
  247. Area += " <td>";
  248. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  249. Area += " </td>";
  250. Area += "</tr>";
  251. }
  252. }
  253. else
  254. {
  255. for (var i=1;i<=10;++i)
  256. {
  257. Area += "<tr>";
  258. Area += " <td>";
  259. Area += InformationSet[i].word;
  260. Area += " </td>";
  261. Area += " <td>";
  262. Area += InformationSet[i].num;
  263. Area += " </td>";
  264. Area += " <td>";
  265. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  266. Area += " </td>";
  267. Area += "</tr>";
  268. }
  269. }
  270. Area += "</table>";
  271.  
  272. if(leng>10)
  273. {
  274. Area += "<table class='WhatATable' style='margin-left:10px;float:left;'>";
  275. Area += "<tr>";
  276. Area += "<th style='width:100px;'>热词</th>";
  277. Area += "<th style='width:100px;'>词频</th>";
  278. Area += "<th style='width:100px;'>详细信息链接</th>";
  279. Area += "</tr>";
  280. if(leng<=20)
  281. {
  282. for (var i=11;i<=leng;++i)
  283. {
  284. Area += "<tr>";
  285. Area += " <td>";
  286. Area += InformationSet[i].word;
  287. Area += " </td>";
  288. Area += " <td>";
  289. Area += InformationSet[i].num;
  290. Area += " </td>";
  291. Area += " <td>";
  292. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  293. Area += " </td>";
  294. Area += "</tr>";
  295. }
  296. }
  297. else
  298. {
  299. for (var i=11;i<=20;++i)
  300. {
  301. Area += "<tr>";
  302. Area += " <td>";
  303. Area += InformationSet[i].word;
  304. Area += " </td>";
  305. Area += " <td>";
  306. Area += InformationSet[i].num;
  307. Area += " </td>";
  308. Area += " <td>";
  309. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  310. Area += " </td>";
  311. Area += "</tr>";
  312. }
  313. }
  314. Area += "</table>";
  315. }
  316.  
  317. if(leng>20)
  318. {
  319. Area += "<table class='WhatATable' style='margin-left:10px;float:left;'>";
  320. Area += "<tr>";
  321. Area += "<th style='width:100px;'>热词</th>";
  322. Area += "<th style='width:100px;'>词频</th>";
  323. Area += "<th style='width:100px;'>详细信息链接</th>";
  324. Area += "</tr>";
  325. for (var i=21;i<=leng;++i)
  326. {
  327. Area += "<tr>";
  328. Area += " <td>";
  329. Area += InformationSet[i].word;
  330. Area += " </td>";
  331. Area += " <td>";
  332. Area += InformationSet[i].num;
  333. Area += " </td>";
  334. Area += " <td>";
  335. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  336. Area += " </td>";
  337. Area += "</tr>";
  338. }
  339. Area += "</table>";
  340. }
  341. Area += "<div style='clear:both;'></div>";
  342. Area += "<br>";
  343. Area += "<br>";
  344. Area += "<br>";
  345. Area += "<br>";
  346. Area += "<p style='margin-left:30px;margin-right:30px;'>";
  347. Area += "&nbsp;<button onclick='simpleReset_Kind(\""+kind+"\")'>起始页</button>&nbsp;";
  348.  
  349. var start = ((wordPage-4)>=1)?wordPage-4:1;
  350. var end = ((wordPage+4)<=pageNum)?(wordPage+4):pageNum;
  351.  
  352. //alert(parseInt(wordPage+4+""));
  353.  
  354. if(start!=1)
  355. {
  356. Area += "&nbsp;...&nbsp;";
  357. }
  358.  
  359. for(var i=start;i<=end;++i)
  360. {
  361. Area += "&nbsp;<button onclick='XReset_Kind(\""+i+"\",\""+kind+"\")'>"+i+"</button>&nbsp;";
  362. }
  363.  
  364. if(end!=pageNum)
  365. {
  366. Area += "&nbsp;...&nbsp;";
  367. }
  368.  
  369. Area += "&nbsp;<button onclick='XReset_Kind("+pageNum+",\""+kind+"\")'>结束页</button>&nbsp;";
  370. Area += "&nbsp;&nbsp;<b>选择页数跳转</b>&nbsp;&nbsp;";
  371. Area += "<select id='selPage' onchange='makeSurePage_Kind(\""+kind+"\")'>";
  372. for(var i=1;i<=pageNum;++i)
  373. {
  374. Area += "<option value='"+i+"'>"+i+"</option>";
  375. }
  376. Area += "</select>";
  377. Area += "</p>";
  378. document.getElementById("MessageArea").innerHTML = Area;
  379. surePage_Kind();
  380. }
  381. }
  382. };
  383. var url ="../com/servlet/ServletForKindKeyWords";
  384. var server = "sql=";
  385. // 按照词频顺序
  386. if(sty==0)
  387. {
  388. server += " order by num ";
  389. }
  390. // 按照字母表顺序
  391. else if(sty==1)
  392. {
  393. server += " order by word ";
  394. }
  395.  
  396. // 如果是降序
  397. if(order==0)
  398. {
  399. server += " DESC ";
  400. }
  401.  
  402. server += (" Limit "+((wordPage-1)*30)+",30 ");
  403.  
  404. server += "&table="+kind;
  405.  
  406. xmlHttp.open("POST", url, true);
  407. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  408. xmlHttp.send(server);
  409. }
  410. function surePage_Kind(kind)
  411. {
  412. document.getElementById("selPage").selectedIndex = wordPage-1;
  413. }

wordkind.js

  1. var wordPage = 1;
  2. function makePageToWord()
  3. {
  4. var Area = '';
  5. Area += '<div class="row">';
  6. Area += '<div class="col-md-12">';
  7. Area += '<h2>全部热词</h2>';
  8. Area += '</div>';
  9. Area += '</div>';
  10. Area += '<hr />';
  11. Area += '<br>';
  12. Area += '<div style="background:rgb(0,153,255);margin-left:20px;margin-right:20px;height:25px;">';
  13. Area += ' <div style="margin-left:10px;margin-right:10px;margin-top:5px;margin-bottom:5px;">';
  14. Area += ' <b style="float:left;">热词表</b>';
  15. Area += ' <div style="float:right;">';
  16. Area += ' <select id="sty" onchange="simpleReset()">';
  17. Area += ' <option value="0" selected>按照词频顺序</option>';
  18. Area += ' <option value="1">按照字母表顺序</option>';
  19. Area += ' </select>';
  20. Area += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
  21. Area += ' <select id="order" onchange="simpleReset()">';
  22. Area += ' <option value="0" selected>降序</option>';
  23. Area += ' <option value="1">增序</option>';
  24. Area += ' </select>';
  25. Area += '&nbsp;&nbsp;';
  26. Area += ' </div>';
  27. Area += ' </div>';
  28. Area += '</div>';
  29. Area += '<br>';
  30. Area += '<br>';
  31. Area += '<div id="MessageArea">';
  32. Area += '</div>';
  33. document.getElementById("page-inner").innerHTML = Area;
  34. simpleReset();
  35. }
  36. function simpleReset()
  37. {
  38. wordPage = 1;
  39. resetAndFresh();
  40. }
  41. function XReset(p)
  42. {
  43. wordPage = p;
  44. wordPage = parseInt(""+wordPage);
  45. resetAndFresh();
  46. }
  47. function resetAndFresh()
  48. {
  49. var sty = document.getElementById("sty").value;
  50. var order = document.getElementById("order").value;
  51. var xmlHttp = null;
  52. try{
  53. xmlHttp = new XMLHttpRequest();
  54. } catch (e1) {
  55. try {
  56. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  57. } catch (e2) {
  58. alert("Your browser does not support XMLHTTP!");
  59. return;
  60. }
  61. }
  62. xmlHttp.onreadystatechange = function() {
  63. if (xmlHttp.readyState == 4) {
  64. if (xmlHttp.status == 200)
  65. {
  66. var Area = "";
  67.  
  68. s = xmlHttp.responseText;
  69. var InformationSet = eval('('+s+')');
  70. var leng = InformationSet[0].Length;
  71. var max = InformationSet[0].MaxSize;
  72. var pageNum = InformationSet[0].Page;
  73.  
  74. Area += "<table class='WhatATable' style='margin-left:200px;float:left;'>";
  75. Area += "<tr>";
  76. Area += "<th style='width:100px;'>热词</th>";
  77. Area += "<th style='width:100px;'>词频</th>";
  78. Area += "<th style='width:100px;'>详细信息链接</th>";
  79. Area += "</tr>";
  80. if(leng<10)
  81. {
  82. for (var i=1;i<=leng;++i)
  83. {
  84. Area += "<tr>";
  85. Area += " <td>";
  86. Area += InformationSet[i].word;
  87. Area += " </td>";
  88. Area += " <td>";
  89. Area += InformationSet[i].num;
  90. Area += " </td>";
  91. Area += " <td>";
  92. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  93. Area += " </td>";
  94. Area += "</tr>";
  95. }
  96. }
  97. else
  98. {
  99. for (var i=1;i<=10;++i)
  100. {
  101. Area += "<tr>";
  102. Area += " <td>";
  103. Area += InformationSet[i].word;
  104. Area += " </td>";
  105. Area += " <td>";
  106. Area += InformationSet[i].num;
  107. Area += " </td>";
  108. Area += " <td>";
  109. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  110. Area += " </td>";
  111. Area += "</tr>";
  112. }
  113. }
  114. Area += "</table>";
  115.  
  116. if(leng>10)
  117. {
  118. Area += "<table class='WhatATable' style='margin-left:10px;float:left;'>";
  119. Area += "<tr>";
  120. Area += "<th style='width:100px;'>热词</th>";
  121. Area += "<th style='width:100px;'>词频</th>";
  122. Area += "<th style='width:100px;'>详细信息链接</th>";
  123. Area += "</tr>";
  124. if(leng<=20)
  125. {
  126. for (var i=11;i<=leng;++i)
  127. {
  128. Area += "<tr>";
  129. Area += " <td>";
  130. Area += InformationSet[i].word;
  131. Area += " </td>";
  132. Area += " <td>";
  133. Area += InformationSet[i].num;
  134. Area += " </td>";
  135. Area += " <td>";
  136. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  137. Area += " </td>";
  138. Area += "</tr>";
  139. }
  140. }
  141. else
  142. {
  143. for (var i=11;i<=20;++i)
  144. {
  145. Area += "<tr>";
  146. Area += " <td>";
  147. Area += InformationSet[i].word;
  148. Area += " </td>";
  149. Area += " <td>";
  150. Area += InformationSet[i].num;
  151. Area += " </td>";
  152. Area += " <td>";
  153. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  154. Area += " </td>";
  155. Area += "</tr>";
  156. }
  157. }
  158. Area += "</table>";
  159. }
  160.  
  161. if(leng>20)
  162. {
  163. Area += "<table class='WhatATable' style='margin-left:10px;float:left;'>";
  164. Area += "<tr>";
  165. Area += "<th style='width:100px;'>热词</th>";
  166. Area += "<th style='width:100px;'>词频</th>";
  167. Area += "<th style='width:100px;'>详细信息链接</th>";
  168. Area += "</tr>";
  169. for (var i=21;i<=leng;++i)
  170. {
  171. Area += "<tr>";
  172. Area += " <td>";
  173. Area += InformationSet[i].word;
  174. Area += " </td>";
  175. Area += " <td>";
  176. Area += InformationSet[i].num;
  177. Area += " </td>";
  178. Area += " <td>";
  179. Area += " <a href='#' onclick='toSomeWhere(\""+InformationSet[i].word+"\")'>详细信息</a>";
  180. Area += " </td>";
  181. Area += "</tr>";
  182. }
  183. Area += "</table>";
  184. }
  185. Area += "<div style='clear:both;'></div>";
  186. Area += "<br>";
  187. Area += "<br>";
  188. Area += "<br>";
  189. Area += "<br>";
  190. Area += "<p style='margin-left:30px;margin-right:30px;'>";
  191. Area += "&nbsp;<button onclick='simpleReset()'>起始页</button>&nbsp;";
  192.  
  193. var start = ((wordPage-4)>=1)?wordPage-4:1;
  194. var end = ((wordPage+4)<=pageNum)?(wordPage+4):pageNum;
  195.  
  196. //alert(parseInt(wordPage+4+""));
  197.  
  198. if(start!=1)
  199. {
  200. Area += "&nbsp;...&nbsp;";
  201. }
  202.  
  203. for(var i=start;i<=end;++i)
  204. {
  205. Area += "&nbsp;<button onclick='XReset("+i+")'>"+i+"</button>&nbsp;";
  206. }
  207.  
  208. if(end!=pageNum)
  209. {
  210. Area += "&nbsp;...&nbsp;";
  211. }
  212.  
  213. Area += "&nbsp;<button onclick='XReset("+pageNum+")'>结束页</button>&nbsp;";
  214. Area += "&nbsp;&nbsp;<b>选择页数跳转</b>&nbsp;&nbsp;";
  215. Area += "<select id='selPage' onchange='makeSurePage()'>";
  216. for(var i=1;i<=pageNum;++i)
  217. {
  218. Area += "<option value='"+i+"'>"+i+"</option>";
  219. }
  220. Area += "</select>";
  221. Area += "</p>";
  222. document.getElementById("MessageArea").innerHTML = Area;
  223. surePage();
  224. }
  225. }
  226. };
  227. var url ="../com/servlet/ServletForAllKeyWords";
  228. var server = "sql=";
  229. // 按照词频顺序
  230. if(sty==0)
  231. {
  232. server += " order by num ";
  233. }
  234. // 按照字母表顺序
  235. else if(sty==1)
  236. {
  237. server += " order by word ";
  238. }
  239.  
  240. // 如果是降序
  241. if(order==0)
  242. {
  243. server += " DESC ";
  244. }
  245.  
  246. server += (" Limit "+((wordPage-1)*30)+",30 ");
  247.  
  248. xmlHttp.open("POST", url, true);
  249. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  250. xmlHttp.send(server);
  251. }
  252. function toSomeWhere(word)
  253. {
  254. var Area = '';
  255. Area += '<div class="row">';
  256. Area += ' <div class="col-md-12">';
  257. Area += ' <h2>'+word+'</h2>';
  258. Area += ' </div>';
  259. Area += '</div>';
  260. Area += '<hr />';
  261. Area += '<br>';
  262. Area += '<div id="MessageArea">';
  263. Area += '</div>';
  264. document.getElementById("page-inner").innerHTML = Area;
  265.  
  266. var xmlHttp = null;
  267. try{
  268. xmlHttp = new XMLHttpRequest();
  269. } catch (e1) {
  270. try {
  271. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  272. } catch (e2) {
  273. alert("Your browser does not support XMLHTTP!");
  274. return;
  275. }
  276. }
  277. xmlHttp.onreadystatechange = function() {
  278. if (xmlHttp.readyState == 4) {
  279. if (xmlHttp.status == 200)
  280. {
  281. var Area = "";
  282.  
  283. s = xmlHttp.responseText;
  284. var InformationSet = eval('('+s+')');
  285. var word = InformationSet[1].word;
  286. var num = InformationSet[1].num;
  287. var exp = InformationSet[1].exp;
  288.  
  289. Area += "<p><b id='word' style='font-size:120%;'>"+word+"</b></p>";
  290. Area += "<p style='color:rgb(200,200,200);'>&nbsp;&nbsp;&nbsp;引用次数:"+num+"</p>"
  291. Area += "<p style='font:\"楷体\";font-size:90%;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
  292. if(exp=="")
  293. {
  294. Area += "目前百度百科上并没有相关解释信息...";
  295. }
  296. else
  297. {
  298. Area += exp;
  299. }
  300. Area += "</p>";
  301. Area += "<br>";
  302. Area += "<div id='finalDIV'></div>"
  303. document.getElementById("MessageArea").innerHTML = Area;
  304.  
  305. getLinksForKey(word);
  306. }
  307. }
  308. };
  309. var url ="../com/servlet/ServletForAllKeyWords";
  310. var server = "sql= where word='"+word+"'";
  311.  
  312. xmlHttp.open("POST", url, true);
  313. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  314. xmlHttp.send(server);
  315. }
  316. function getLinksForKey(word)
  317. {
  318. var xmlHttp = null;
  319. try{
  320. xmlHttp = new XMLHttpRequest();
  321. } catch (e1) {
  322. try {
  323. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  324. } catch (e2) {
  325. alert("Your browser does not support XMLHTTP!");
  326. return;
  327. }
  328. }
  329. xmlHttp.onreadystatechange = function() {
  330. if (xmlHttp.readyState == 4) {
  331. if (xmlHttp.status == 200)
  332. {
  333. var Area = "";
  334. Area += "<br>";
  335. Area += "<br>";
  336. Area += "<b style='font-size:120%;'>引用网页:</b>";
  337. Area += "<br>";
  338. Area += "<br>";
  339. Area += "<ul>";
  340. s = xmlHttp.responseText;
  341. var InformationSet = eval('('+s+')');
  342. var leng = InformationSet[0].Length;
  343.  
  344. for(var i=1;i<=leng;++i)
  345. {
  346. var word = InformationSet[i].word;
  347. var num = InformationSet[i].num;
  348. var title = InformationSet[i].title;
  349. var link = InformationSet[i].link;
  350. Area += "<li>";
  351. Area += "<a href='"+link+"' title='引用次数:"+num+"'>"+title+"</a>"
  352. Area += "</li>";
  353. }
  354. Area += "</ul>";
  355.  
  356. document.getElementById("finalDIV").innerHTML = Area;
  357. }
  358. }
  359. };
  360. var url ="../com/servlet/ServletForLinkData";
  361. var server = "word="+word;
  362.  
  363. xmlHttp.open("POST", url, true);
  364. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  365. xmlHttp.send(server);
  366. }
  367. function surePage()
  368. {
  369. document.getElementById("selPage").selectedIndex = wordPage-1;
  370. }
  371. function makeSurePage()
  372. {
  373. wordPage = document.getElementById("selPage").value;
  374. wordPage = parseInt(""+wordPage);
  375. resetAndFresh();
  376. }

word.js

  更新 web.xml 引用

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  3. <display-name>HotWord</display-name>
  4. <servlet>
  5. <description>This is the description of my J2EE component</description>
  6. <display-name>This is the display name of my J2EE component</display-name>
  7. <servlet-name>ServletForWords</servlet-name>
  8. <servlet-class>com.servlet.ServletForWords</servlet-class>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>ServletForWords</servlet-name>
  12. <url-pattern>/com/servlet/ServletForWords</url-pattern>
  13. </servlet-mapping>
  14. <servlet>
  15. <description>This is the description of my J2EE component</description>
  16. <display-name>This is the display name of my J2EE component</display-name>
  17. <servlet-name>ServletForAllKeyWords</servlet-name>
  18. <servlet-class>com.servlet.ServletForAllKeyWords</servlet-class>
  19. </servlet>
  20. <servlet-mapping>
  21. <servlet-name>ServletForAllKeyWords</servlet-name>
  22. <url-pattern>/com/servlet/ServletForAllKeyWords</url-pattern>
  23. </servlet-mapping>
  24. <servlet>
  25. <description>This is the description of my J2EE component</description>
  26. <display-name>This is the display name of my J2EE component</display-name>
  27. <servlet-name>ServletForLinkData</servlet-name>
  28. <servlet-class>com.servlet.ServletForLinkData</servlet-class>
  29. </servlet>
  30. <servlet-mapping>
  31. <servlet-name>ServletForLinkData</servlet-name>
  32. <url-pattern>/com/servlet/ServletForLinkData</url-pattern>
  33. </servlet-mapping>
  34. <servlet>
  35. <description>This is the description of my J2EE component</description>
  36. <display-name>This is the display name of my J2EE component</display-name>
  37. <servlet-name>ServletForMoreInfo</servlet-name>
  38. <servlet-class>com.servlet.ServletForMoreInfo</servlet-class>
  39. </servlet>
  40. <servlet-mapping>
  41. <servlet-name>ServletForMoreInfo</servlet-name>
  42. <url-pattern>/com/servlet/ServletForMoreInfo</url-pattern>
  43. </servlet-mapping>
  44. <servlet>
  45. <description>This is the description of my J2EE component</description>
  46. <display-name>This is the display name of my J2EE component</display-name>
  47. <servlet-name>ServletForKindKeyWords</servlet-name>
  48. <servlet-class>com.servlet.ServletForKindKeyWords</servlet-class>
  49. </servlet>
  50. <servlet-mapping>
  51. <servlet-name>ServletForKindKeyWords</servlet-name>
  52. <url-pattern>/com/servlet/ServletForKindKeyWords</url-pattern>
  53. </servlet-mapping>
  54. <welcome-file-list>
  55. <welcome-file>index.html</welcome-file>
  56. <welcome-file>index.htm</welcome-file>
  57. <welcome-file>index.jsp</welcome-file>
  58. <welcome-file>default.html</welcome-file>
  59. <welcome-file>default.htm</welcome-file>
  60. <welcome-file>default.jsp</welcome-file>
  61. </welcome-file-list>
  62. </web-app>

web.xml

  更新 jsp 页面代码:

  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <!DOCTYPE html>
  4. <html><!-- xmlns="http://www.w3.org/1999/xhtml" -->
  5. <head>
  6. <!--<meta charset="utf-8" />-->
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0" charset="utf-8"/>
  8. <title>热词分析</title>
  9. <!-- BOOTSTRAP STYLES-->
  10. <link href="../assets/css/bootstrap.css" rel="stylesheet" />
  11. <!-- FONTAWESOME STYLES-->
  12. <link href="../assets/css/font-awesome.css" rel="stylesheet" />
  13. <!-- CUSTOM STYLES-->
  14. <link href="../assets/css/custom.css" rel="stylesheet" />
  15. <!-- PERSONAL FONTS-->
  16. <link href='../cssFiles/basic.css' rel='stylesheet' type='text/css' />
  17. <!-- GOOGLE FONTS-->
  18. <link href='http://fonts.googleapis.com/css?family=Open+Sans' rel='stylesheet' type='text/css' />
  19. </head>
  20. <script src="../jsFiles/jquery/jquery-3.4.1.min.js" charset="utf-8"></script>
  21. <script src="../jsFiles/echarts/echarts.min.js" charset="utf-8"></script>
  22. <script src="../jsFiles/echarts/echarts-wordcloud-master/dist/echarts-wordcloud.min.js" charset="utf-8"></script>
  23. <!-- <script src="../jsFiles/echarts/echarts-wordcloud-master/dist/echarts-wordcloud.min.js" charset="utf-8"></script> -->
  24. <script src="../jsFiles/basic.js" charset="utf-8"></script>
  25. <script src='../jsFiles/echarts/echarts.simple.js'></script>
  26. <script src="../jsFiles/word.js" charset="utf-8"></script>
  27. <script src="../jsFiles/wordkind.js" charset="utf-8"></script>
  28. <script src="../jsFiles/cloud.js" charset="utf-8"></script>
  29. <body>
  30. <div id="wrapper">
  31. <div class="navbar navbar-inverse navbar-fixed-top">
  32. <div class="adjust-nav">
  33. <div class="navbar-header">
  34. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".sidebar-collapse">
  35. <span class="icon-bar"></span>
  36. <span class="icon-bar"></span>
  37. <span class="icon-bar"></span>
  38. </button>
  39. <a class="navbar-brand"><i class="fa fa-square-o "></i>&nbsp;欢迎您使用本热词分析系统</a>
  40. </div>
  41. </div>
  42. </div>
  43. <!-- /. NAV TOP -->
  44. <div class="navbar-default navbar-side"> <!-- nav role="navigation" -->
  45. <div class="sidebar-collapse">
  46. <ul class="nav" id="main-menu">
  47. <li class="text-center user-image-back">
  48. <img src="../assets/img/find_user.png" class="img-responsive" />
  49. </li>
  50. <li>
  51. <a href="#" onclick="makePageToMain()"><i class="fa fa-table "></i>主页</a>
  52. </li>
  53. <li>
  54. <a href="#" onclick="makePageToWord()"><i class="fa fa-key "></i>全部热词</a>
  55. </li>
  56. <li>
  57. <a href="#" onclick="makePageToKind()"><i class="fa fa-key "></i>热词目录</a>
  58. </li>
  59. <li>
  60. <a href="#"><i class="fa fa-edit "></i>热词需求<span class="fa arrow"></span></a>
  61. <ul class="nav nav-second-level">
  62. <li>
  63. <a href="#" onclick="makePageToCl()">热词云图</a>
  64. </li>
  65. <li>
  66. <a href="#" onclick="makePageToRe()">热词关系图</a>
  67. </li>
  68. </ul>
  69. </li>
  70. </ul>
  71. </div>
  72. </div>
  73. <!-- /. NAV SIDE -->
  74. <div id="page-wrapper" >
  75. <div id="page-inner">
  76. <div class="row">
  77. <div class="col-md-12">
  78. <h2>主页</h2>
  79. </div>
  80. </div>
  81. <!-- /. ROW -->
  82. <hr />
  83. <!-- /. ROW -->
  84. <br>
  85. <br>
  86. <div id="MessageArea">
  87. <br>
  88. <h3>欢迎您使用本热词分析系统</h3>
  89. </div>
  90. </div>
  91. <!-- /. PAGE INNER -->
  92. </div>
  93. <!-- /. PAGE WRAPPER -->
  94. </div>
  95. <!-- /. WRAPPER -->
  96. <!-- SCRIPTS -AT THE BOTOM TO REDUCE THE LOAD TIME-->
  97. <!-- JQUERY SCRIPTS -->
  98. <script src="../assets/js/jquery-1.10.2.js"></script>
  99. <!-- BOOTSTRAP SCRIPTS -->
  100. <script src="../assets/js/bootstrap.min.js"></script>
  101. <!-- METISMENU SCRIPTS -->
  102. <script src="../assets/js/jquery.metisMenu.js"></script>
  103. <!-- CUSTOM SCRIPTS -->
  104. <script src="../assets/js/custom.js"></script>
  105. </body>
  106. </html>

index.jsp

  另外的部分我想了,还是分开写吧!

Python 爬取 热词并进行分类数据分析-[热词分类+目录生成]的更多相关文章

  1. Python 爬取 热词并进行分类数据分析-[热词关系图+报告生成]

    日期:2020.02.05 博客期:144 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  2. python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法

    本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://mo ...

  3. python爬取花木兰豆瓣影评,并进行词云分析

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  4. Python 爬取 热词并进行分类数据分析-[云图制作+数据导入]

    日期:2020.01.28 博客期:136 星期二 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入](本期博客) ...

  5. Python 爬取 热词并进行分类数据分析-[简单准备] (2020年寒假小目标05)

    日期:2020.01.27 博客期:135 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备](本期博客) b.[云图制作+数据导入] ...

  6. Python 爬取 热词并进行分类数据分析-[数据修复]

    日期:2020.02.01 博客期:140 星期六 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  7. Python 爬取 热词并进行分类数据分析-[解释修复+热词引用]

    日期:2020.02.02 博客期:141 星期日 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  8. Python 爬取 热词并进行分类数据分析-[拓扑数据]

    日期:2020.01.29 博客期:137 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  9. Python 爬取 热词并进行分类数据分析-[App制作]

    日期:2020.02.14 博客期:154 星期五 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

随机推荐

  1. bugku 输入密码查看flag

    首先进入网页会看到一个网页 然后用bp进行爆破 首先点击clear 然后选中刚下随便输入进去的密码点击add然后设置一下类型 然后进行开始攻击 攻击过程中点击length 根据长度可以判断出密码然后回 ...

  2. Layui自定义模块的使用方式

    为什么要自定义模块呢?好处很多.比如可以大量重用代码...... 根据layui官方的文档说明.首先第一步是要确定你要扩展的模块名称 现在做的是登录功能.因此扩展模块名叫  login 使用layui ...

  3. 【Python实现图片验证码】

    "```python import base64 import random from PIL import Image from PIL import ImageDraw # 画笔对象 f ...

  4. python GIL锁与多cpu

    多核CPU   linux : cat /proc/cpuinfo 如果你不幸拥有一个多核CPU,你肯定在想,多核应该可以同时执行多个线程. 如果写一个死循环的话,会出现什么情况呢? 打开Mac OS ...

  5. Java代码三级跳——表达式、语句和代码块

    Java代码三级跳—表达式.语句和代码块 表达式(expression):Java中最基本的一个运算.比如一个加法运算表达式.1+2是一个表达式,a+b也是. 语句(statement):类似于平时说 ...

  6. PAT 1014 Waiting in Line (模拟)

    Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...

  7. The Preliminary Contest for ICPC Asia Xuzhou 2019 B. so easy (unordered_map+并查集)

    这题单用map过不了,太慢了,所以改用unordered_map,对于前面删除的点,把它的父亲改成,后面一位数的父亲,初始化的时候,map里是零,说明它的父亲就是它本身,最后输出答案的时候,输出每一位 ...

  8. JAVA(2)之关于类的访问权限控制

    类的成员的四种访问权限 private 只能在当前类中访问 无修饰 同一个包中的类都可以访问 protected 同一个包中的类可以访问 不同包中的子类可以访问 public 所有类都可以访问 示例代 ...

  9. UTC/GMT/CST/RTC

    GMT:格林尼治标准时间,是指位于伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线.也就是零时区的时间. UTC:世界协调时间,是一个时间系统.可以理解为这个地球的标准时间 ...

  10. 树莓派3B 安装gcc和g++

    转:https://blog.csdn.net/zhuming3834/article/details/81946707 安装 如果不是root 用户,请自行加上sudo apt-get instal ...