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

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>

相关推荐

  1. python爬虫数据

    2024-07-11 18:40:02       51 阅读
  2. 数据】教程案例

    2024-07-11 18:40:02       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 18:40:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 18:40:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 18:40:02       45 阅读
  4. Python语言-面向对象

    2024-07-11 18:40:02       55 阅读

热门阅读

  1. OpenCV和CUDA匹配,使用源码构建OpenCV

    2024-07-11 18:40:02       20 阅读
  2. Oracle左连接过滤条件注意事项

    2024-07-11 18:40:02       18 阅读
  3. Spring-Data-ES-template工具类使用

    2024-07-11 18:40:02       20 阅读
  4. 四种常见的Http请求方式

    2024-07-11 18:40:02       19 阅读
  5. [USACO5.3] 巨大的牛棚Big Barn

    2024-07-11 18:40:02       22 阅读
  6. python杨辉三角的两种书写方式

    2024-07-11 18:40:02       19 阅读
  7. 【Go - 常见的5类循环】

    2024-07-11 18:40:02       23 阅读
  8. 二叉搜索树的最近公共祖先

    2024-07-11 18:40:02       20 阅读
  9. 基于单目摄像头实现的AR多人脸捕捉效果展示

    2024-07-11 18:40:02       16 阅读
  10. git 基本使用

    2024-07-11 18:40:02       20 阅读
  11. 【智能制造-15】常见通讯协议

    2024-07-11 18:40:02       19 阅读