在当今信息时代,数据的价值越来越受到重视。而如何将数据进行可视化展示,已经成为了许多企业和个人的必备技能之一。本文将介绍如何使用Python爬虫、Flask框架和Echarts图表库搭建一个《深度学习》书评显示大屏。
一、爬取数据
首先,我们需要从豆瓣网上爬取《深度学习》这本书的书评数据。我们可以使用Python中的requests和BeautifulSoup库来实现。
代码如下:
import requests
from bs4 import BeautifulSoup
url = 'https://book.douban.com/subject/27087503/comments/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
comments = []
for comment in soup.find_all('span', 'short'):
comments.append(comment.string)
上述代码中,我们首先指定了要爬取的网址以及请求头部信息。然后,使用requests库发送请求,并使用BeautifulSoup库解析网页内容。最后,我们遍历网页中所有书评内容,并将其添加到一个列表中。
二、数据预处理
由于爬取到的书评数据中可能存在一些无意义的字符,比如空格、换行符等,因此我们需要对数据进行预处理。在本文中,我们将使用正则表达式来去除这些无意义的字符。
代码如下:
import re
pattern = re.compile('\s+')
for i in range(len(comments)):
comments[i] = re.sub(pattern, '', comments[i])
上述代码中,我们首先使用re库编译了一个正则表达式模式,用于匹配所有的空格、制表符和换行符。然后,我们使用循环遍历书评列表中的每一个元素,并使用re.sub()函数将匹配到的字符替换为空字符串。
三、情感分析
在进行可视化展示之前,我们需要对书评数据进行情感分析,以便更好地了解读者对这本书的评价。在本文中,我们将使用TextBlob库来进行情感分析。
代码如下:
from textblob import TextBlob
positive = 0
negative = 0
neutral = 0
for comment in comments:
blob = TextBlob(comment)
polarity = blob.sentiment.polarity
if polarity > 0:
positive += 1
elif polarity < 0:
negative += 1
else:
neutral += 1
total = positive + negative + neutral
positive_percent = round(positive / total * 100, 2)
negative_percent = round(negative / total * 100, 2)
neutral_percent = round(neutral / total * 100, 2)
上述代码中,我们首先定义了三个变量,分别用于存储积极、消极和中性情感的评论数量。然后,我们使用TextBlob库对每一个书评进行情感分析,并根据情感极性将其归类为积极、消极或中性评论。最后,我们计算出每一种情感评论所占的比例。
四、可视化展示
在完成数据预处理和情感分析之后,我们可以使用Echarts图表库来将结果进行可视化展示。在本文中,我们将绘制一个饼图和一个柱状图来展示读者对《深度学习》这本书的评价情况。
代码如下:
from flask import Flask, render_template
from pyecharts import options as opts
from pyecharts.charts import Bar, Pie
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/pie')
def pie_chart():
c = (
Pie()
.add('', [['积极', positive_percent], ['消极', negative_percent], ['中性', neutral_percent]])
.set_colors(['#FF3333', '#33FF33', '#FFFF33'])
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
.set_global_opts(title_opts=opts.TitleOpts(title='《深度学习》书评情感分析'))
)
return c.render_embed()
@app.route('/bar')
def bar_chart():
c = (
Bar()
.add_xaxis(['积极', '消极', '中性'])
.add_yaxis('数量', [positive, negative, neutral])
.set_colors(['#FF3333', '#33FF33', '#FFFF33'])
.set_series_opts(label_opts=opts.LabelOpts(formatter="{c}"))
.set_global_opts(title_opts=opts.TitleOpts(title='《深度学习》书评情感分析'))
)
return c.render_embed()
if __name__ == '__main__':
app.run(debug=True)
上述代码中,我们首先导入了Flask框架和Echarts图表库。然后,定义了三个路由函数,分别用于渲染主页、饼图页面和柱状图页面。在饼图页面和柱状图页面中,我们使用Pie()和Bar()函数创建了一个饼图和一个柱状图,并设置了相应的参数。最后,我们使用render_embed()函数将图表嵌入到HTML模板中,并启动了Flask应用程序。
五、总结
本文介绍了如何使用Python爬虫、Flask框架和Echarts图表库搭建一个《深度学习》书评显示大屏。通过对书评数据进行预处理和情感分析,并将结果可视化展示出来,我们可以更好地了解读者对这本书的评价情况。希望本文能够对您有所帮助!