diff --git a/views/page/page.py b/views/page/page.py new file mode 100644 index 0000000..4021fce --- /dev/null +++ b/views/page/page.py @@ -0,0 +1,138 @@ +from flask import Flask,session,render_template,redirect,Blueprint,request +from snownlp import SnowNLP +from utils.getHomePageData import * +from utils.getHotWordPageData import * +from utils.getTableData import * +from utils.getPublicData import getAllHotWords +from utils.getEchartsData import * +pb = Blueprint('page',__name__,url_prefix='/page',template_folder='templates') + +@pb.route('/home') +def home(): + username = session.get('username') + articleLenMax,likeCountMaxAuthorName,cityMax = getHomeTagsData() + commentsLikeCountTopFore = getHomeCommentsLikeCountTopFore() + xData,yData = getHomeArticleCreatedAtChart() + typeChart = getHomeTypeChart() + createAtChart = getHomeCommentCreatedChart() + # getUserNameWordCloud() + return render_template('index.html', + username=username, + articleLenMax=articleLenMax, + likeCountMaxAuthorName=likeCountMaxAuthorName, + cityMax=cityMax, + commentsLikeCountTopFore=commentsLikeCountTopFore, + xData=xData, + yData=yData, + typeChart=typeChart, + createAtChart=createAtChart + ) + +@pb.route('/hotWord') +def hotWord(): + username = session.get('username') + hotWordList = getAllHotWords() + defaultHotWord = hotWordList[0][0] + if request.args.get('hotWord'):defaultHotWord = request.args.get('hotWord') + hotWordLen = getHotWordLen(defaultHotWord) + xData,yData = getHotWordPageCreatedAtCharData(defaultHotWord) + sentences = '' + value = SnowNLP(defaultHotWord).sentiments + if value == 0.5: + sentences = '中性' + elif value > 0.5: + sentences = '正面' + elif value < 0.5: + sentences = '负面' + + comments = getCommentFilterData(defaultHotWord) + return render_template('hotWord.html', + username=username, + hotWordList=hotWordList, + defaultHotWord=defaultHotWord, + hotWordLen=hotWordLen, + sentences=sentences, + xData=xData, + yData=yData, + comments=comments + ) + +@pb.route('/tableData') +def tableData(): + username = session.get('username') + defaultFlag = False + if request.args.get('flag'):defaultFlag = True + tableData = getTableDataList(defaultFlag) + return render_template('tableData.html', + username=username, + tableData=tableData, + defaultFlag=defaultFlag + ) + +@pb.route('/articleChar') +def articleChar(): + username = session.get('username') + typeList = getTypeList() + defaultType = typeList[0] + if request.args.get('type'): defaultType = request.args.get('type') + xData,yData = getArticleCharLikeCount(defaultType) + x1Data,y1Data = getArticleCharCommentsLen(defaultType) + x2Data,y2Data = getArticleCharRepotsLen(defaultType) + return render_template('articleChar.html', + username=username, + typeList=typeList, + defaultType=defaultType, + xData=xData, + yData=yData, + x1Data=x1Data, + y1Data=y1Data, + x2Data=x2Data, + y2Data=y2Data + ) + +@pb.route('/ipChar') +def ipChar(): + username = session.get('username') + articleRegionData = getIPCharByArticleRegion() + commentRegionData = getIPCharByCommentsRegion() + return render_template('ipChar.html', + username=username, + articleRegionData=articleRegionData, + commentRegionData=commentRegionData + ) + +@pb.route('/commentChar') +def commentChar(): + username = session.get('username') + xData,yData = getCommentCharDataOne() + genderPieData = getCommentCharDataTwo() + return render_template('commentChar.html', + username=username, + xData=xData, + yData=yData, + genderPieData=genderPieData + ) + +@pb.route('/yuqingChar') +def yuqingChar(): + username = session.get('username') + xData,yData,bieData = getYuQingCharDataOne() + bieData1,bieData2 = getYuQingCharDataTwo() + x1Data,y1Data = getYuQingCharDataThree() + return render_template('yuqingChar.html', + username=username, + xData=xData, + yData=yData, + bieData=bieData, + bieData1=bieData1, + bieData2=bieData2, + x1Data=x1Data, + y1Data=y1Data + ) + +@pb.route('/articleCloud') +def articleCloud(): + username = session.get('username') + return render_template('articleContentCloud.html', + username=username + ) diff --git a/views/page/templates/hotWord.html b/views/page/templates/hotWord.html new file mode 100644 index 0000000..2cb738f --- /dev/null +++ b/views/page/templates/hotWord.html @@ -0,0 +1,494 @@ +{% extends 'base_page.html' %} +{% block title %} + 热词统计 +{% endblock %} + +{% block nav %} + +{% endblock %} +{% block content %} +
+
+
+
+

热词统计页

+
+
+
+
+
+
+
+
+

+<div class="form-group">
+   <label>Small</label>
+   <select class="form-control form-control-sm mb-3">
+      <option selected="">Open this select menu</option>
+      <option value="1">One</option>
+      <option value="2">Two</option>
+      <option value="3">Three</option>
+   </select>
+</div>
+<div class="form-group">
+   <label>Default</label>
+   <select class="form-control mb-3">
+      <option selected="">Open this select menu</option>
+      <option value="1">One</option>
+      <option value="2">Two</option>
+      <option value="3">Three</option>
+   </select>
+</div>
+<div class="form-group">
+   <label>Large</label>
+   <select class="form-control form-control-lg">
+      <option selected="">Open this select menu</option>
+      <option value="1">One</option>
+      <option value="2">Two</option>
+      <option value="3">Three</option>
+   </select>
+</div>
+
+
+
+ + + +
+
+
+ +
+
+
+
+
+
+

{{ defaultHotWord }}

+
+
    +
  • 热词名称:{{ defaultHotWord }}
  • +
  • 出现次数:{{ hotWordLen }}次
  • +
  • 热词情感:{{ sentences }}
  • +
+
+ +
+
+
+
+
+
+

热词年份变化趋势

+
+
+
+
+
+
+
+
+
+
+

热词查询表格

+
+
+ +
+
+
+
+
+

+<table id="datatable" class="table data-table table-striped table-bordered" >
+   <thead>
+      <tr>
+         <th>Name</th>
+         <th>Position</th>
+         <th>Office</th>
+         <th>Age</th>
+         <th>Start date</th>
+         <th>Salary</th>
+      </tr>
+   </thead>
+   <tbody>
+      <tr>
+         <td>Tiger Nixon</td>
+         <td>System Architect</td>
+         <td>Edinburgh</td>
+         <td>61</td>
+         <td>2011/04/25</td>
+         <td>$320,800</td>
+      </tr>
+      <tr>
+         <td>Garrett Winters</td>
+         <td>Accountant</td>
+         <td>Tokyo</td>
+         <td>63</td>
+         <td>2011/07/25</td>
+         <td>$170,750</td>
+      </tr>
+      <tr>
+         <td>Ashton Cox</td>
+         <td>Junior Technical Author</td>
+         <td>San Francisco</td>
+         <td>66</td>
+         <td>2009/01/12</td>
+         <td>$86,000</td>
+      </tr>
+      <tr>
+         <td>Cedric Kelly</td>
+         <td>Senior Javascript Developer</td>
+         <td>Edinburgh</td>
+         <td>22</td>
+         <td>2012/03/29</td>
+         <td>$433,060</td>
+      </tr>
+      <tr>
+         <td>Airi Satou</td>
+         <td>Accountant</td>
+         <td>Tokyo</td>
+         <td>33</td>
+         <td>2008/11/28</td>
+         <td>$162,700</td>
+      </tr>
+      <tr>
+         <td>Brielle Williamson</td>
+         <td>Integration Specialist</td>
+         <td>New York</td>
+         <td>61</td>
+         <td>2012/12/02</td>
+         <td>$372,000</td>
+      </tr>
+      <tr>
+         <td>Herrod Chandler</td>
+         <td>Sales Assistant</td>
+         <td>San Francisco</td>
+         <td>59</td>
+         <td>2012/08/06</td>
+         <td>$137,500</td>
+      </tr>
+      <tr>
+         <td>Rhona Davidson</td>
+         <td>Integration Specialist</td>
+         <td>Tokyo</td>
+         <td>55</td>
+         <td>2010/10/14</td>
+         <td>$327,900</td>
+      </tr>
+      <tr>
+         <td>Colleen Hurst</td>
+         <td>Javascript Developer</td>
+         <td>San Francisco</td>
+         <td>39</td>
+         <td>2009/09/15</td>
+         <td>$205,500</td>
+      </tr>
+      <tr>
+         <td>Sonya Frost</td>
+         <td>Software Engineer</td>
+         <td>Edinburgh</td>
+         <td>23</td>
+         <td>2008/12/13</td>
+         <td>$103,600</td>
+      </tr>
+      <tr>
+         <td>Jena Gaines</td>
+         <td>Office Manager</td>
+         <td>London</td>
+         <td>30</td>
+         <td>2008/12/19</td>
+         <td>$90,560</td>
+      </tr>
+      <tr>
+         <td>Quinn Flynn</td>
+         <td>Support Lead</td>
+         <td>Edinburgh</td>
+         <td>22</td>
+         <td>2013/03/03</td>
+         <td>$342,000</td>
+      </tr>
+      <tr>
+         <td>Charde Marshall</td>
+         <td>Regional Director</td>
+         <td>San Francisco</td>
+         <td>36</td>
+         <td>2008/10/16</td>
+         <td>$470,600</td>
+      </tr>
+      <tr>
+         <td>Haley Kennedy</td>
+         <td>Senior Marketing Designer</td>
+         <td>London</td>
+         <td>43</td>
+         <td>2012/12/18</td>
+         <td>$313,500</td>
+      </tr>
+      <tr>
+         <td>Tatyana Fitzpatrick</td>
+         <td>Regional Director</td>
+         <td>London</td>
+         <td>19</td>
+         <td>2010/03/17</td>
+         <td>$385,750</td>
+      </tr>
+      <tr>
+         <td>Michael Silva</td>
+         <td>Marketing Designer</td>
+         <td>London</td>
+         <td>66</td>
+         <td>2012/11/27</td>
+         <td>$198,500</td>
+      </tr>
+      <tr>
+         <td>Paul Byrd</td>
+         <td>Chief Financial Officer (CFO)</td>
+         <td>New York</td>
+         <td>64</td>
+         <td>2010/06/09</td>
+         <td>$725,000</td>
+      </tr>
+      <tr>
+         <td>Gloria Little</td>
+         <td>Systems Administrator</td>
+         <td>New York</td>
+         <td>59</td>
+         <td>2009/04/10</td>
+         <td>$237,500</td>
+      </tr>
+      <tr>
+         <td>Bradley Greer</td>
+         <td>Software Engineer</td>
+         <td>London</td>
+         <td>41</td>
+         <td>2012/10/13</td>
+         <td>$132,000</td>
+      </tr>
+      <tr>
+         <td>Dai Rios</td>
+         <td>Personnel Lead</td>
+         <td>Edinburgh</td>
+         <td>35</td>
+         <td>2012/09/26</td>
+         <td>$217,500</td>
+      </tr>
+</table>
+
+
+

根据选择的热词从而查询出评论数据

+
+
+
+ + + + + + + + + + + {% for i in comments %} + + + + + + + + + {% endfor %} + +
文章ID评论用户评论性别评论地址评论内容点赞量
{{ i[0] }}{{ i[5] }} + {% if i[6] =='f' %} + 女生 + {% else %} + 男生 + {% endif %} + {{ i[3] }}{{ i[4] }}👍{{ i[2] }}
+
+
+
+
+
+
+ +{% endblock %} + +{% block echarts %} + +{% endblock %} \ No newline at end of file diff --git a/views/page/templates/index.html b/views/page/templates/index.html new file mode 100644 index 0000000..8515143 --- /dev/null +++ b/views/page/templates/index.html @@ -0,0 +1 @@ +{% extends 'base_page.html' %} \ No newline at end of file diff --git a/views/page/templates/tableData.html b/views/page/templates/tableData.html new file mode 100644 index 0000000..cc24908 --- /dev/null +++ b/views/page/templates/tableData.html @@ -0,0 +1,215 @@ +{% extends 'base_page.html' %} + +{% block title %} +微博舆情统计页 +{% endblock %} +{% block nav %} + +{% endblock %} +{% block content %} +
+
+
+
+

微博舆情统计页

+
+
+
+ +
+
+
+
+
+

微博文章统计表格 - 舆情 情感分类 +

+
+
+ +
+
+
+

情感分类

+
+
+
+ + + + + + + + + + + + {% if defaultFlag %} + + {% endif %} + + + + {% for article in tableData %} + + + + + + + + + + {% if defaultFlag %} + + {% endif %} + + {% endfor %} + +
+ 文章ID + + 文章IP + + 点赞量 + + 转发量 + + 评论量 + + 类型 + + 内容 + + 发布时间 + + 情感分类 +
+ + {{ article[0] }} + + {{ article[4] }}👍{{ article[1] }}🥇{{ article[2] }}🔥{{ article[3] }}{{ article[8] }}{{ article[5] }}{{ article[7] }} + {% if article[-1] == '正面' %} + + {{ article[-1] }} + + + {% else %} + + {{ article[-1] }} + + + {% endif %} +
+
+
+
+
+
+
+
+ +
+{% endblock %} + + +{% block echarts %} + +{% endblock %} \ No newline at end of file diff --git a/views/page/templates/yuqingChar.html b/views/page/templates/yuqingChar.html new file mode 100644 index 0000000..473c67f --- /dev/null +++ b/views/page/templates/yuqingChar.html @@ -0,0 +1,363 @@ +{% extends 'base_page.html' %} +{% block title %} + 舆情分析 +{% endblock %} +{% block nav %} + +{% endblock %} + +{% block content %} +
+
+
+
+

舆情分析

+
+
+
+
+
+
+
+
+

热词情感趋势柱状图

+
+
+
+
+
+
+
+
+
+
+
+

热词情感趋势树形图

+
+
+
+
+
+
+
+
+
+
+
+

文章内容与评论内容舆情趋势饼状图

+
+
+
+
+
+
+
+
+
+
+
+

热词TOP10

+
+
+
+
+
+
+
+
+
+ +{% endblock %} + +{% block echarts %} + + + + +{% endblock %} \ No newline at end of file