这里为了化繁为简只展示了三个页面,当然可以加一些首页、团队之类的页面。也可以用css,html进行装饰美化。
推荐:
moban.com 包含一些css的版本可以自己选择,不免费
iconfont.cn 包含一些图标,免费的
app.py代码
from flask import Flask,render_template
import sqlite3
app = Flask(__name__)
@app.route('/movie')
def movie():
datalist = []
con = sqlite3.connect("movie.db")
cur = con.cursor()
sql = "select * from movie250"
data = cur.execute(sql)
#在游标和链接关闭之前保存数据,否则数据丢失
for items in data:
datalist.append(items)
cur.close()
con.close()
return render_template("movie.html",datalist = datalist)
if __name__ == '__main__':
app.run()
movie.html页面如下
movie
排名
中文名
英文名
评分
评价人数
概况
其他信息
{% for movie in datalist %}
{{ movie[0] }}
{{ movie[3] }}
{{ movie[4] }}
{{ movie[5] }}
{{ movie[6] }}
{{ movie[7] }}
{{ movie[8] }}
{% endfor %}
将评分和评分人数以图表形式绘制
score.html
评分表
app.py中添加
@app.route('/score')
def score():
score = [] # 评分
num = [] # 每个评分所统计出的电影数量
con = sqlite3.connect("movie.db")
cur = con.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()
con.close()
return render_template("score.html", score=score, num=num)
词云展示概括
ciyun.py如下
#前三个要导包
import jieba #分词
from matplotlib import pyplot as plt #绘图,数据可视化
from wordcloud import WordCloud #词云
from PIL import Image #图片处理
import numpy as np #矩阵运算
import sqlite3 #数据库
#准备词云所需的文字(词)
con = sqlite3.connect('movie.db')
cur = con.cursor()
sql = 'select instroduction from movie250'
data = cur.execute(sql)
text = ""
for item in data:
text = text + item[0]
#print(item[0])
#print(text)
cur.close()
con.close()
#分词
cut = jieba.cut(text)
string = ' '.join(cut)
print(len(string))
img = Image.open(r'.\static\img\tree.jpg') #打开遮罩图片
img_array = np.array(img) #将图片转换为数组
wc = WordCloud(
background_color='white',
mask=img_array,
font_path="msyh.ttc" #字体所在位置:C:\Windows\Fonts
)
wc.generate_from_text(string)
#绘制图片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis('off') #是否显示坐标轴
#plt.show() #显示生成的词云图片
#输出词云图片到文件
plt.savefig(r'.\static\img\word.jpg',dpi=500)
可以看到static/img下有一个word.jpg
word.html
词云
app.py中添加
@app.route('/word')
def word():
return render_template("word.html")