六、数据可视化—首页、列表页制作(爬虫及数据可视化)

六、数据可视化---首页、列表页制作(爬虫及数据可视化)

1,首页制作

使用前面爬取的movie.db数据库,完成豆瓣的可视化表现

(1)创建新项目选择flask框架

新建完成后

数据库可以放在指定的位置,也可以放在flask框架下面

理论上数据库需要单独放置,不会和项目放在一起

此处直接放在根路径下了

(2)下载模板

此处找到现有的模板,在其基础上进行修改

http://www.cssmoban.com/cssthemes/

使用模板之家的模板,可以根据自己需要选择

因为豆瓣数据比较小就选择比较简单的

http://www.cssmoban.com/cssthemes/9296.shtml

此网站风格像是企业站的风格

对于我们来讲,需要上面是一个标题栏,能够点一下,下面就显示一些具体的数据,图标等信息,此处基本满足要求,就选择了

此素材在云盘中已经存在了,



想很多自适应的,都是使用jQuery进行实现的

(3)导入flask框架中进行改写

如何将其导入flask框架中进行改写,首先将index.html复制到flask中的templates

未来所有的网页要想静态的显示,都要放到templates中

将assets放到static中,一些静态文件,主要是考虑到未来CDN的分发,把静态文件分发到很多服务器上去,降低服务器的访问压力,一般静态文件放到static中,网页渲染的文件会单独拿出来。


(4)访问服务器

(5)修改图片路径

但只有文字,说明图片路径不对,之前复制到static的时候,相对路径变了,现在需要将index.html页面中的assets前加入static

如下


路径替换好后,再次访问就显示成功了,如下

通过此种方式,即可将外部下载的网页模板实现了本地化的一个配置

(6)修改html

要对别人的HTML改成自己想要的一些效果

初步想法如下

为了更直观的修改我们想要修改的地方,可以进入检查,用鼠标找到我们想要更改的位置,再进入html的源代码页面进行删除更改

也可以在pycharm中找到搜索

将drop down和contact us删除(不需要了)

第一频想显示的是我们的信息不是团队,只要

将下方的替换掉上方的位置


结果如下

此时首页就制作完成了

2,列表页制作

(1)更改标题



(2)下载图标

可以在下方连接中下载图标

是阿里开源出来的,大部分免费

https://www.iconfont.cn/

(3)更改跳转链接

点击超链接是可能报错,是因为没有进行响应

下面对后面的进行一下清除

将首页index中的从main开始到end main删除

(4)更改app.py

from flask import Flask,render_template

app = Flask(__name__)


@app.route('/')                             #访问根路径
def index():
    return render_template("index.html")    #在templates下的路径

@app.route('/index')                             #访问根路径/index时和访问根路径时返回的网页是一样的,即首页
def home():
    #return render_template("index.html")    #在templates下的路径
    return index()                          #不返回模板渲染的页面,而是返回一个函数是一样的

@app.route('/movie')                             #访问根路径
def movie():
    return render_template("movie.html")

@app.route('/score')                             #访问根路径
def score():
    return render_template("score.html")

@app.route('/word')                             #访问根路径
def word():
    return render_template("word.html")

@app.route('/team')                             #访问根路径
def team():
    return render_template("team.html")

if __name__ == '__main__':
    app.run()

现在连接基本搞定了,需要改的,路由解析,模板渲染

(5)Movie.html展示表格


@app.route('/movie')                             #访问根路径
def movie():
    datalist=[]
    con = sqlite3.connect("movie.db")           #连接数据库,路径当前路径
    cur = con.cursor()                          #游标定义
    sql = "select * from movie250"              #从数据库中的表movie250查询所有数据
    data = cur.execute(sql)
    for item in data:
        datalist.append(item)                   #得到的数据要保存到列表中,否则后面关闭时会丢失信息
    cur.close()
    con.close()
    return render_template("movie.html",movies=datalist)    #将datalist数据放到movies变量中,在渲染网页时将movies传到网页中



到此为止所有数据显示结果就告此一段落了,一方面是没有分页,250条数据太多,用户查找麻烦,有兴趣可以进行分页

也可以显示图片海报等

数据可视化最基本的是列表的方式,图片其实直接加上<img>标签并设置宽高就能了

(6)Movie.html

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta content="width=device-width, initial-scale=1.0" name="viewport">

  <title>豆瓣Top250数据分析</title>
  <meta content="" name="descriptison">
  <meta content="" name="keywords">

  <!-- Favicons -->
  <link href="static/assets/img/favicon.png" rel="icon">
  <link href="static/assets/img/apple-touch-icon.png" rel="apple-touch-icon">

  <!-- Google Fonts -->
  <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i|Raleway:300,300i,400,400i,600,600i,700,700i,900" rel="stylesheet">

  <!-- Vendor CSS Files -->
  <link href="static/assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
  <link href="static/assets/vendor/icofont/icofont.min.css" rel="stylesheet">
  <link href="static/assets/vendor/boxicons/css/boxicons.min.css" rel="stylesheet">
  <link href="static/assets/vendor/animate.css/animate.min.css" rel="stylesheet">
  <link href="static/assets/vendor/venobox/venobox.css" rel="stylesheet">
  <link href="static/assets/vendor/aos/aos.css" rel="stylesheet">

  <!-- Template Main CSS File -->
  <link href="static/assets/css/style.css" rel="stylesheet">

</head>

<body>
    <!-- ======= top 被删 ======= -->
  <!-- ======= Header ======= -->
  <header id="header">
    <div class="container">

      <div class="logo float-left">
        <h1 class="text-light"><a href="index.html"><span>Mamba</span></a></h1>
        <!-- Uncomment below if you prefer to use an image logo -->
        <!-- <a href="index.html"><img src="static/assets/img/logo.png" alt="" class="img-fluid"></a>-->
      </div>

      <nav class="nav-menu float-right d-none d-lg-block">
        <ul>
          <li class="active"><a href="/index">首页 <i class="la la-angle-down"></i></a></li>
          <li><a href="/movie">电影</a></li>
          <li><a href="/score">评分</a></li>
          <li><a href="/word">词云</a></li>
          <li><a href="/team">团队</a></li>
         <!-- ======= drop down和contact us被删 ======= -->
        </ul>
      </nav><!-- .nav-menu -->

    </div>
  </header><!-- End Header -->

    <!-- ======= Our Team Section ======= -->
    <section id="team" class="team">
      <div class="container">

        <div class="section-title">
          <h2>豆瓣电影Top250电影名单</h2>
        </div>

        <!-- ======= Counts Section ======= -->
    <section class="counts section-bg">
      <div class="container">

          <table class="table table-striped">       <!-- 如果使用border="1"太难看,使用table-striped斑马线格式就好看一些了 -->
              <tr>
                  <td>排名</td>
                  <td>电影中文名称</td>
                  <td>电影外国名称</td>
                  <td>评分</td>
                  <td>评价人数</td>
                  <td>一句话概述</td>
                  <td>其他信息</td>
              </tr>

              {% for movie in movies %}         <!-- 在上下括号中间的进行循环 -->
                <tr>
                  <td>{{ movie[0] }}</td>
                  <td>
                      <a href="{{ movie[1] }}" target="_blank">         <!-- 加入名称超链接,target是新建标签页打开链接 -->
                      {{ movie[3] }}
                      </a>
                  </td>
                  <td>{{ movie[4] }}</td>
                  <td>{{ movie[5] }}</td>
                  <td>{{ movie[6] }}</td>
                  <td>{{ movie[7] }}</td>
                  <td>{{ movie[8] }}</td>
              </tr>
              {% endfor %}

          </table>

      </div>
    </section><!-- End Counts Section -->

      </div>
    </section><!-- End Our Team Section -->


  <!-- ======= Footer ======= -->
  <footer id="footer">

    <div class="container">
      <div class="copyright">
        &copy; Copyright <strong><span>Mamba</span></strong>. All Rights Reserved
      </div>
    
    </div>
  </footer><!-- End Footer -->

  <a href="#" class="back-to-top"><i class="icofont-simple-up"></i></a>

  <!-- Vendor JS Files -->
  <script src="static/assets/vendor/jquery/jquery.min.js"></script>
  <script src="static/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
  <script src="static/assets/vendor/jquery.easing/jquery.easing.min.js"></script>
  <script src="static/assets/vendor/php-email-form/validate.js"></script>
  <script src="static/assets/vendor/jquery-sticky/jquery.sticky.js"></script>
  <script src="static/assets/vendor/venobox/venobox.min.js"></script>
  <script src="static/assets/vendor/waypoints/jquery.waypoints.min.js"></script>
  <script src="static/assets/vendor/counterup/counterup.min.js"></script>
  <script src="static/assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
  <script src="static/assets/vendor/aos/aos.js"></script>

  <!-- Template Main JS File -->
  <script src="static/assets/js/main.js"></script>

</body>

</html>
相关推荐
_.Switch28 分钟前
Python机器学习模型的部署与维护:版本管理、监控与更新策略
开发语言·人工智能·python·算法·机器学习
Hoper.J1 小时前
PyTorch 模型保存与加载的三种常用方式
人工智能·pytorch·python
弱冠少年1 小时前
websockets库使用(基于Python)
开发语言·python·numpy
技术无疆2 小时前
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
开发语言·人工智能·python·深度学习·神经网络·机器学习·数据挖掘
羊小猪~~2 小时前
机器学习/数据分析--用通俗语言讲解时间序列自回归(AR)模型,并用其预测天气,拟合度98%+
人工智能·python·机器学习·数据挖掘·数据分析·回归·时序数据库
qq_273900232 小时前
解析TMalign文本文件中的转换矩阵
python·生物信息学
阿华的代码王国3 小时前
【JavaEE】——文件IO的应用
开发语言·python
电饭叔4 小时前
《python语言程序设计》2018版第8章19题几何Rectangle2D类(下)-头疼的几何和数学
开发语言·python
程序猿小D4 小时前
第二百六十七节 JPA教程 - JPA查询AND条件示例
java·开发语言·前端·数据库·windows·python·jpa
杰哥在此5 小时前
Python知识点:如何使用Multiprocessing进行并行任务管理
linux·开发语言·python·面试·编程