当前位置: 首页 > article >正文

基于Flask实现豆瓣Top250电影可视化

项目截图

概述

该项目旨在对豆瓣Top 250电影进行全面的数据分析,使用了Python爬虫、Flask框架进行开发,并采用了Echarts进行数据可视化以及WordCloud进行词云分析。应用展示了多个功能,如电影列表、评分分布、词频统计和团队信息。

主要功能
  1. 首页: 显示项目的概述和统计数据,包括经典电影数量、评分统计、词汇统计和团队成员数量。

  2. 电影列表页: 展示豆瓣Top 250电影的详细信息,包括电影中文名称、外文名称、评分、评价人数、一句话概述及其他信息。

  3. 评分分布页: 通过柱状图展示豆瓣Top 250电影的评分分布情况,提供用户对评分分布的直观了解。

  4. 词云统计页: 根据250部电影的一句话描述,提炼出词云树,通过词云图展示词汇的频率,让用户更清晰地了解人们对经典电影的理解。

  5. 团队页: 展示团队成员的信息。

技术实现
  1. Python爬虫: 使用Python爬虫从豆瓣网站上抓取电影数据。

  2. Flask框架: 使用Flask搭建Web应用,实现前后端的交互。

  3. SQLite数据库: 使用SQLite数据库存储爬取到的电影数据。

  4. Echarts: 使用Echarts进行数据的可视化,生成评分分布的柱状图。

  5. WordCloud: 使用WordCloud生成词云图,进行词频统计和展示。

  6. Matplotlib: 配合WordCloud进行词云图的绘制和保存。

数据库结构
  • movie250表: 存储豆瓣Top 250电影的详细信息,包括电影中文名称、外文名称、评分、评价人数等字段。
使用方法
  1. 启动Flask应用:

    if __name__ == '__main__':app.run()
    
  2. 访问首页,通过浏览器访问http://localhost:5000/查看应用的各个功能页面。

代码示例
  • Flask路由配置:

    from flask import Flask, render_template
    import sqlite3
    app = Flask(__name__)@app.route('/')
    def index():return render_template("/index.html")@app.route('/index')
    def home():return render_template("/index.html")@app.route('/movie')
    def movie():datalist = []conn = sqlite3.connect("movie.db")cur = conn.cursor()sql = '''select * from movie250''';data = cur.execute(sql)for item in data:datalist.append(item)cur.close()conn.close()return render_template("/movie.html",movies = datalist)@app.route('/score')
    def score():score = []num = []conn = sqlite3.connect("movie.db")cur = conn.cursor()sql = '''select score,count(score) from movie250 group by score'''data = cur.execute(sql)for item in data:score.append(str(item[0]))num.append(item[1])cur.close()conn.close()return render_template("score.html", score=score,num=num)@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()
    
  • 词云图生成:

    import jieba
    from matplotlib import pyplot as plt
    from wordcloud import WordCloud
    from PIL import Image
    import numpy as np
    import sqlite3conn = sqlite3.connect('movie.db')
    cur = conn.cursor()
    sql = 'select cname from movie250'
    data =cur.execute(sql)
    text = ""
    for item in data:text = text + item[0]
    cur.close()
    conn.close()cut = jieba.cut(text)
    string = ' '.join(cut)
    print(len(string))img = Image.open(r'.\static\assets\img\tree.jpg')
    img_array = np.array(img)
    wc = WordCloud(background_color = 'white',mask = img_array,font_path = "msyh.ttc"
    )
    wc.generate_from_text(string)
    fig = plt.figure(1)
    plt.imshow(wc)
    plt.axis('off')
    plt.savefig(r'.\static\assets\img\word.jpg',dpi=500)
    

这个项目通过整合多个技术栈,实现了对豆瓣Top 250电影数据的分析和可视化展示,是一个完整的全栈项目示例。

http://www.lryc.cn/news/2393553.html

相关文章:

  • More SQL(Focus Subqueries、Join)
  • 项目部署react经历
  • 从图像处理到深度学习:直播美颜SDK的人脸美型算法详解
  • 智能教育个性化学习路径规划系统实战指南
  • spark- ResultStage 和 ShuffleMapStage介绍
  • zTasker一款Windows自动化软件,提升效率:大小仅有10MB,免费无广告
  • 人工智能100问☞第34问:什么是语音识别与合成?
  • 最大流-Ford-Fulkerson增广路径算法py/cpp/Java三语言实现
  • 怎么从一台电脑拷贝已安装的所有python第三方库到另一台
  • 【测试】Bug和用例
  • 缓存穿透、缓存击穿、缓存雪崩目前记录(纯日记)
  • 鸿蒙OS的5.0.1.120版本体验怎么样?
  • 使用ssh-audit扫描ssh过期加密算法配置
  • 前端工程化 Source Map(源码映射)详解
  • 2025.05.28-华为暑期实习第二题-200分
  • Java+Playwright自动化-2-环境准备与搭建-基于Maven
  • 由sigmod权重曲线存在锯齿的探索
  • 二、OpenCV图像处理-图像处理
  • UPS的工作原理和UPS系统中旁路的作用
  • 麒麟系统 Linux(aarch64处理器)系统java项目接入海康SDK问题
  • 深入理解数组索引:原理、应用与优化
  • 【洛谷P9303题解】AC- [CCC 2023 J5] CCC Word Hunt
  • Python图片格式批量转换器教程
  • 从公开到私密:重新思考 Web3 的数据安全
  • 计算机网络常见体系结构、分层必要性、分层设计思想以及专用术语介绍
  • 接口自动化测试用例的编写方法
  • 解决Docker存储空间不足问题
  • 基于SpringBoot的商家销售管理网站的设计与实现
  • 【数据集】高分辨率(1 km)月尺度中国气候(降水+最高/低温)数据集(1952–2019)
  • word中表格拉不动以及插入图片有间距