前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从《流浪星球》1000条评论中看看这部电影到底咋样

从《流浪星球》1000条评论中看看这部电影到底咋样

作者头像
TeamsSix
发布2019-09-24 16:46:18
3610
发布2019-09-24 16:46:18
举报
文章被收录于专栏:TeamsSix的网络空间安全专栏

在豆瓣上有很多关于《流浪星球》的评论,评论太多了,那么到底这部电影怎么样呢?Python可以给出我们答案,这就需要用到Python的词云了。

什么是词云?词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。

首先我们需要准备的python库包括:requests,BeautifulSoup,jieba,matplotlib,wordcloud和imageio,可以通过pip install —-进行安装。其中jieba用于分词;matplotlib基础的画图库;wordcloud用于生成词云对象;imageio用于读取背景图片。

接下来进行代码实现:

获取评论。每页评论有20条,通过修改url中的start参数可以实现查看不同页面评论,同时每部电影在豆瓣中都有对应的id,因此将《流浪星球》的id值与需要抓取的页面开始值放入到comment(id,i)中即可获取当前页面评论,并返回评论数据。

代码语言:javascript
复制
def comment(id,i):
   result = []
   inres = requests.get('https://movie.douban.com/subject/{}/comments?start={}&limit=20&sort=new_score&status=P'.format(id,i),headers = headers)
   insoup = BeautifulSoup(inres.text,'html.parser')
   for comment in insoup.select('.comment-item'):
       result.append(comment.select('p')[0].text)
   return result

将评论存入text变量。range(0,1001,20)函数中从0到1001,以20个数分割,以实现抓取不同页面评论的效果,最终将抓取1000条评论。同时《流浪星球》的id通过访问网页url中可以知道为26266893,最终评论数据将被去除换行后以字符型传入text中。

代码语言:javascript
复制
import jieba
import requests
from imageio import imread
from bs4 import BeautifulSoup
import matplotlib.pyplot as plt
from wordcloud import WordCloud
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}pools = []
for j in range(0,1001,20):
   pools.append(comment(26266893,j))
text = str(pools).replace('\\n','')

这里放张图片,看看一千条评论有多少内容,总共32479个字。

将中文剪切后存入变量wl中。这里删除掉了一些无关紧要的词,通过jieba库将中文剪切后存入到wl变量中。

代码语言:javascript
复制
texts = text.replace('还是','').replace('就是','').replace('没有','').replace('不是','').replace('一个','').replace('电影','')
wordlist = jieba.cut(texts,cut_all=True)
wl = " ".join(wordlist)

生成词云图。宽高设置为1600x800,最大字体尺寸为300,最小字体尺寸为30,背景颜色为黑色,最大词数为wl变量的长度也就是全部评论,字体路径设置为本机黑体路径。

代码语言:javascript
复制
wc = WordCloud(width=1600,height=800,max_font_size=300,min_font_size=30,background_color = 'black',max_words = len(wl),font_path = 'C:\Windows\Fonts\simhei.ttf')
myword = wc.generate(wl)
plt.imshow(myword)
plt.axis("off")
plt.show()

不过这样显得有些单调,因此我们将背景设置为图片,不过最后感觉图片分辨率太低了,因此借助plt.figure(figsize=(20,10)) 和plt.tight_layout(pad=0) 语句提高了图片分辨率,其分辨率的调整可以参考:https://stackoverrun.com/cn/q/7908092

代码语言:javascript
复制
jpg = imread(r'C:\Users\Administrator\Desktop\llxq_4.0x.png')
wc = WordCloud(mask = jpg,background_color = 'white',max_words = len(wl),font_path = 'C:\Windows\Fonts\simhei.ttf')
myword = wc.generate(wl)
plt.figure(figsize=(20,10))
plt.imshow(myword)
plt.tight_layout(pad=0)
plt.axis("off")
plt.show()

通过上面两张词云来看,在一千条评论中,中国、科幻、可以、特效等关键词出现的最多,很明显大家对于这部电影都还是很支持的,作为中国科幻迷,也是感到很自豪,哈哈。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TeamsSix 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档