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

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

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

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

接下来进行代码实现:

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

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中。

import jiebaimport requestsfrom imageio import imreadfrom bs4 import BeautifulSoupimport matplotlib.pyplot as pltfrom wordcloud import WordCloudheaders = {'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变量中。

texts = text.replace('还是','').replace('就是','').replace('没有','').replace('不是','').replace('一个','').replace('电影','')wordlist = jieba.cut(texts,cut_all=True)wl = " ".join(wordlist)

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

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()

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()

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190219B0MW1M00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券