首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python实现侏罗纪世界2影评分析案例

今天下午一个朋友带我儿子去健身了,我和老婆有了一些时间可以做自己想做的事情,做什么呢?到万达影院IMAX看电影去!最近上映了一部美国环球影业公司出品的科幻冒险电影《侏罗纪世界2》,看了两个小时,感觉不坏,回来上豆瓣看了下影评,就随手写了个Python程序来爬取豆瓣影评并统计分析,然后以观看这部电影时印象最深刻的“撞撞龙”(这头龙在电影里撞来撞去,是一头抢镜的恐龙,不甘被囚禁在古堡里,帮助主角脱险,并大闹恐龙拍卖会的会场,老婆大人问我这是什么龙,这我哪儿知道啊,就随口给它取了一个撞撞龙的名字,其实学名冥河龙,生活于白垩纪晚期,全长约2.4米,高约1米,体型和习性都很像山羊,命名源于美国蒙大拿州的地狱溪)为背景做了一个词云来显示影评统计和分析结果——因为此前有类似程序,前后只用了不少10分钟时间就搞定了。

写这个代码,第一步就是分析豆瓣页面,然后写爬虫把影评信息爬取下来存储到一个本地文件comment.txt里来,然后利用jieba类库对爬取下来的影评进行分析并统计分析,最后利用词云将分析结果显示出来。

逻辑清晰没毛病,直接上代码:

import random

import time

import requests

import jieba

import codecs

import matplotlib.pyplot as plt

from wordcloud import WordCloud,ImageColorGenerator

from scipy.misc import imread

from bs4 import BeautifulSoup

def getHtml(url):

try:

r=requests.get(url,timeout=30)

r.raise_for_status()

return r.text

except:

return ''

def getComment(html):

soup = BeautifulSoup(html, 'html.parser')

comments_list = []

comment_nodes = soup.select('.comment > p')

for node in comment_nodes:

comments_list.append(node.get_text().strip().replace("\n", "") + u'\n')

return comments_list

def saveCommentText(fpath):

pre_url ="https://movie.douban.com/subject/26416062/comments?"

depth = 8

with open(fpath, 'a', encoding='utf-8') as f:

for i in range(depth):

url = pre_url+'start=' + str(20 * i) + '&limit=20&sort=new_score&' +'status=P'

html = getHtml(url)

f.writelines(getComment(html))

time.sleep(1 + float(random.randint(1, 20)) / 20)

def cutWords(fpath):

text = ''

with open(fpath,'r', encoding='utf-8') as fin:

for line in fin.readlines():

line = line.strip('\n')

text += ' '.join(jieba.cut(line))

text += ' '

with codecs.open('text.txt', 'a', encoding='utf-8') as f:

f.write(text)

def drawWordcloud():

with codecs.open('text.txt',encoding='utf-8') as f:

comment_text = f.read()

color_mask = imread("pic.png")

Stopwords = [u',', u'。', u'虽然', u'但是', u'不是', u'为了', u'除了', u'什么']

cloud = WordCloud(font_path="simhei.ttf",

background_color='white',

max_words=200,

max_font_size=200,

min_font_size=4,

mask=color_mask,

stopwords=Stopwords)

word_cloud = cloud.generate(comment_text)

image_colors = ImageColorGenerator(color_mask)

plt.figure()

plt.axis("off")

plt.show()

word_cloud.to_file("comment_cloud.jpg")

def main():

fpath = 'comment.txt'

saveCommentText(fpath)

cutWords(fpath)

drawWordcloud()

main()

程序运行结束,生成了下面这个以全场最佳抢镜“撞撞龙”为背景的词云:

从词云结果很直观就能看出,这部电影的主题是讲“人类”和“恐龙”,特效惊人,电影中登场的小女孩很可能是一个关键人物,伏笔满满,未来有无数种可能。最后放走恐龙的不是本来以为是圣母的女主角,而是这个身为克隆人的小女孩,并且那个反派一直在强调这个小女孩很重要,到底为什么那么重要呢?除了她是克隆人之外,在她身上是否还有其他更惊悚的秘密?细思极恐!如果在续集里这个名为梅茜的小女孩变身成了一只恐龙女王统治世界,我一点都不会惊讶。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180623G1QS8T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券