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

基于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电影数据的分析和可视化展示,是一个完整的全栈项目示例。

相关文章:

  • 网站建设服务商长沙seo外包
  • php网站开发防注入站长之家工具
  • django mysql网站开发提高网站排名
  • 广告策划书模板word/seo免费优化软件
  • 襄阳网站建设哪个好/重庆seo海洋qq
  • 吕梁网站制作/应用商店下载安装
  • [网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)
  • 在 Windows 系统下使用 Qt 配置 OpenCV 和 MySql
  • 古腾堡编辑器教程:如何使用WordPress图库区块
  • 论文阅读: 2023 NeurIPS Jailbroken: How does llm safety training fail?
  • UE 5 C++设置物体位置和旋转,初始化虚幻引擎样条线、加载引用虚幻编辑器中的蓝图、设置虚幻编辑器中Actor大小
  • 微软技术赋能:解锁开发、交互与数据潜力,共探未来创新路
  • 频繁报FTPResponse 421 received.Server closed connection
  • pytorch问题汇总
  • 青少年编程与数学 02-020 C#程序设计基础 04课题、常量和变量
  • model.classifier:分类头
  • 每天掌握一个Linux命令 - ab(Apache Benchmark)
  • 【芯片设计中的跨时钟域信号处理:攻克亚稳态的终极指南】
  • Node.js全局变量详解:__filename与__dirname
  • 目标检测 TaskAlignedAssigner 原理
  • LINUX526 回顾 配置ssh rsync定时备份(未完成)
  • Python----目标检测(YOLO数据集)
  • Spring IoC(1)
  • 同一个核磁共振(MRI)检查中,不同序列的图像之间空间坐标定位如何实现
  • JESD204B 协议介绍
  • 服务器的IP是什么东西?