# 导入相关包
from selenium import webdriver
import pandas as pd
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 爬取电影革命者评论信息
driver = webdriver.Chrome(executable_path='chromedriver.exe')
driver.get('https://movie.douban.com/subject/35288767/comments?limit=20&status=P&sort=new_score')
driver.maximize_window()
elements = driver.find_elements_by_class_name('comment-content')
lit = []
for i in elements:
dic = {}
dic['comment'] = i.text
lit.append(dic)
data = pd.DataFrame(lit)
data.head()
comment | |
---|---|
0 | 跟另外一部相比,以点带面用李大钊带出时代群像,更清晰与具感染力。张颂文演得好,踏实又深情。@环球港 |
1 | 非线性发展穿插讲了李大钊在共产党建立发展的历史事件,当然电影不是纪录片,在形式上,在美学上,... |
2 | 整部片子都太满了,情绪太外露,台词太直白生硬,配乐太多太煽情。开头的破碎更是致命的。结构上的... |
3 | 实话实说,有点失望。很多“劳动者”的脸上看不到岁月苦难的皴搜的痕迹,太过整洁光鲜。有很多镜头... |
4 | 虽然对李大钊了解不多,但在银幕前真坐不住,很想赶快回家自学历史,甚至忍不住当场(偷偷)查起资料 |
# 分词
data['cut'] = data['comment'].apply(lambda x: list(jieba.cut(x)))
data
comment | cut | |
---|---|---|
0 | 跟另外一部相比,以点带面用李大钊带出时代群像,更清晰与具感染力。张颂文演得好,踏实又深情。@环球港 | [跟, 另外, 一部, 相比, ,, 以点带面, 用, 李大钊, 带, 出, 时代, 群像,... |
1 | 非线性发展穿插讲了李大钊在共产党建立发展的历史事件,当然电影不是纪录片,在形式上,在美学上,... | [非线性, 发展, 穿插, 讲, 了, 李大钊, 在, 共产党, 建立, 发展, 的, 历史... |
2 | 整部片子都太满了,情绪太外露,台词太直白生硬,配乐太多太煽情。开头的破碎更是致命的。结构上的... | [整部, 片子, 都, 太满, 了, ,, 情绪, 太, 外露, ,, 台词, 太, 直白,... |
3 | 实话实说,有点失望。很多“劳动者”的脸上看不到岁月苦难的皴搜的痕迹,太过整洁光鲜。有很多镜头... | [实话实说, ,, 有点, 失望, 。, 很多, “, 劳动者, ”, 的, 脸上, 看不到... |
4 | 虽然对李大钊了解不多,但在银幕前真坐不住,很想赶快回家自学历史,甚至忍不住当场(偷偷)查起资料 | [虽然, 对, 李大钊, 了解, 不, 多, ,, 但, 在, 银幕, 前真, 坐不住, ,... |
5 | 把李大钊刻画的非常不立体,过于脱离生活。张颂文的表演并不出彩,把三十岁左右的守常先生塑造的老... | [把, 李大钊, 刻画, 的, 非常, 不, 立体, ,, 过于, 脱离生活, 。, 张颂文... |
6 | 加入了艺术追求的类型片着实新鲜。导演对比前作我觉得有进步,故事节奏和剪辑点的创新其实更具代入... | [加入, 了, 艺术, 追求, 的, 类型, 片, 着实, 新鲜, 。, 导演, 对比, 前... |
7 | “只要能找到这条路,我就敢叫天地变颜色!” 承先辈之精神,创吾辈之未来 张颂文李易峰韩庚都演... | [“, 只要, 能, 找到, 这条, 路, ,, 我, 就, 敢, 叫, 天地, 变, 颜色... |
8 | 6/10,有喜欢的段落,但总体观感不是很好,与其叫这个名字还不如叫李大钊回忆录来得直观 | [6, /, 10, ,, 有, 喜欢, 的, 段落, ,, 但, 总体, 观感, 不是, ... |
9 | 碎 我期待的激情澎湃并没有澎湃起来 有点可惜 | [碎, , 我, 期待, 的, 激情, 澎湃, 并, 没有, 澎湃, 起来, , 有点,... |
10 | 张颂文老师的演技值得五星,但是电影的时间线混乱和出戏的“我相信”之类让我没法给五星,并且其他... | [张颂文, 老师, 的, 演技, 值得, 五星, ,, 但是, 电影, 的, 时间, 线, ... |
11 | 全员演技在线,张颂文台词太强了。明知有些场面是故意煽情,但眼泪还是流了下来。 | [全员, 演技, 在线, ,, 张颂文, 台词, 太强, 了, 。, 明知, 有些, 场面,... |
12 | 我好久没有在电影院看到“八一电影制片厂”这行字了~ 非常纯熟大制作的党建科普教育宣传电影,感... | [我, 好久, 没有, 在, 电影院, 看到, “, 八一电影制片厂, ”, 这行, 字, ... |
13 | 导演功力不够,各种转场太过于依赖动画。部分片段插入意义不明,对情节推动毫无作用。三星全给守常先生。 | [导演, 功力, 不够, ,, 各种, 转场, 太, 过于, 依赖, 动画, 。, 部分, ... |
14 | 导演的手法比较新颖,故事讲诉比较有创意,在李大钊即将被绞刑的二十多个小时里,从其他人的角度回... | [导演, 的, 手法, 比较, 新颖, ,, 故事, 讲诉, 比较, 有, 创意, ,, 在... |
15 | 电影幸亏有了管虎的监制,否则徐展雄的这部电影会步《荞麦疯长》的后尘。但电影的闪回旁白太多,剪... | [电影, 幸亏, 有, 了, 管虎, 的, 监制, ,, 否则, 徐展, 雄, 的, 这部,... |
16 | 差点看哭了,整体基调比较悲壮,除了教员登场的时候是暖色调,其他时候都是压抑的冷色调为主。那段... | [差点, 看, 哭, 了, ,, 整体, 基调, 比较, 悲壮, ,, 除了, 教员, 登场... |
17 | 问:什么是电影语言? 答:来看看《革命者》的叙事、画面和声音。 | [问, :, 什么, 是, 电影, 语言, ?, , 答, :, 来, 看看, 《, 革命... |
18 | 首映观影,十分精彩和震撼的一部关于李大钊的自传电影。最突出的是张颂文老师对李大钊先生的诠释和... | [首映, 观影, ,, 十分, 精彩, 和, 震撼, 的, 一部, 关于, 李大钊, 的, ... |
19 | “高尚的生活,常在壮烈的牺牲中。”法兰西共和国、苏维埃和新中国,无不有流血的英雄,李大钊是黑... | [“, 高尚, 的, 生活, ,, 常在, 壮烈, 的, 牺牲, 中, 。, ”, 法兰西共... |
# 导入停顿词文件,用于去除停顿词
stop_word = pd.read_csv('stop.txt', sep='/n', header=None, names=['stopword'], encoding='utf-8')
stop_word.head()
C:\Users\12048\Anaconda3\lib\site-packages\ipykernel_launcher.py:2: ParserWarning: Falling back to the 'python' engine because the 'c' engine does not support regex separators (separators > 1 char and different from '\s+' are interpreted as regex); you can avoid this warning by specifying engine='python'.
stopword | |
---|---|
0 | ! |
1 | " |
2 | # |
3 | $ |
4 | % |
# 去除停顿词,然后分词
stop_list = stop_word['stopword'].tolist()
data['cut'] = data['comment'].apply(lambda x : [i for i in jieba.cut(x) if i not in stop_list])
data.head()
comment | cut | |
---|---|---|
0 | 跟另外一部相比,以点带面用李大钊带出时代群像,更清晰与具感染力。张颂文演得好,踏实又深情。@环球港 | [一部, 相比, 以点带面, 李大钊, 时代, 群像, 清晰, 具, 感染力, 张颂, 文演... |
1 | 非线性发展穿插讲了李大钊在共产党建立发展的历史事件,当然电影不是纪录片,在形式上,在美学上,... | [非线性, 发展, 穿插, 讲, 李大钊, 共产党, 建立, 发展, 历史, 事件, 电影,... |
2 | 整部片子都太满了,情绪太外露,台词太直白生硬,配乐太多太煽情。开头的破碎更是致命的。结构上的... | [整部, 片子, 太满, 情绪, 太, 外露, 台词, 太, 直白, 生硬, 配乐, 太多,... |
3 | 实话实说,有点失望。很多“劳动者”的脸上看不到岁月苦难的皴搜的痕迹,太过整洁光鲜。有很多镜头... | [实话实说, 失望, 劳动者, 脸上, 看不到, 岁月, 苦难, 皴, 搜, 痕迹, 太过,... |
4 | 虽然对李大钊了解不多,但在银幕前真坐不住,很想赶快回家自学历史,甚至忍不住当场(偷偷)查起资料 | [李大钊, 银幕, 前真, 坐不住, 很想, 回家, 自学, 历史, 忍不住, 偷偷, 查,... |
# 词频统计
word = []
for i in data['cut']:
word.extend(i)
# 创建分词数据框
corpus = pd.DataFrame(word, columns=['word'])
corpus['cnt'] = 1
# 分组统计
g = corpus.groupby(['word']).agg({'cnt': 'count'}).sort_values('cnt', ascending=False)
g.head(10)
cnt | |
---|---|
word | |
李大钊 | 18 |
电影 | 11 |
影片 | 8 |
张颂文 | 8 |
太 | 7 |
导演 | 6 |
6 | |
时刻 | 5 |
革命 | 5 |
历史 | 5 |
dic = dict(zip(g.index, g['cnt'])) # 将列表转为字典
wc = WordCloud(font_path="msyh.ttc", mode='RGBA', background_color=None).fit_words(dic) # 需要传入字典
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()