python对影评进行评论分析,形成词云图

1 # -*- coding:utf-8 -*-

2 ‘‘‘

3 抓取豆瓣电影某部电影的评论

4抓取电影

5 网址链接:https://movie.douban.com/subject/26630781/comments

6 为了抓取全部评论需要先进行登录

7 ‘‘‘

8 from selenium import webdriver

9 import time

10 import codecs

11 import jieba

12 import jieba.analyse as analyse

13 from wordcloud import WordCloud

14 from scipy.misc import imread

15 from os import path

16

17 def get_douban_comments(url):

18     comments_list = [] # 评论列表

19     login_url = ‘https://accounts.douban.com/login?source=movie‘

20     user_name = ‘1111111‘  # 这里替换成你的豆瓣用户名

21     password = ‘11111111‘  # 这里替换成你的密码

22     driver = webdriver.Firefox() # 启动Firefox()

23     driver.get(login_url)

24     driver.find_element_by_id(‘email‘).clear() # 清除输入框

25     driver.find_element_by_id(‘email‘).send_keys(user_name) # 输入用户名

26     driver.find_element_by_id(‘password‘).clear()

27     driver.find_element_by_id(‘password‘).send_keys(password) # 输入密码

28     captcha_field = raw_input(‘请打开浏览器输入验证码:‘) # 手动填入验证码

29     driver.find_element_by_id(‘captcha_field‘).send_keys(captcha_field)

30     driver.find_element_by_class_name(‘btn-submit‘).click() # 点击登录按钮

31     time.sleep(5) # 等待跳转到登录之后的页面

32     driver.get(url) # 定位到目标页面

33     driver.implicitly_wait(3) # 智能等待3秒

34     n = 501 # 页数

35     count = 10000 # 评论数目

36     while True:

37         try:

38             results = driver.find_elements_by_class_name(‘comment‘)

39             for result in results:

40                 # author = result.find_elements_by_tag_name(‘a‘)[1].text # 作者

41                 # vote = result.find_element_by_class_name(‘comment-vote‘).find_element_by_tag_name(‘span‘).text # 赞同数目

42                 # time0 = result.find_element_by_class_name(‘comment-info‘).find_elements_by_tag_name(‘span‘)[1].text # 时间

43                 comment = result.find_element_by_tag_name(‘p‘).text # 评论内容

44                 comments_list.append(comment+u‘\n‘)

45                 print u"查找到第%d个评论" % count

46                 count += 1

47             driver.find_element_by_class_name(‘next‘).click() # 点击下一页

48             print u‘第%d页查找完毕!‘ % n

49             n += 1

50             time.sleep(4)

51         except Exception,e:

52             print e

53             break

54     with codecs.open(‘pjl_comment.txt‘,‘a‘,encoding=‘utf-8‘) as f:

55         f.writelines(comments_list)

56     print u"查找到第%d页,第%d个评论!" %(n,count)

57

58 # 得到所有关键词

59 def get_all_keywords(file_name):

60     word_lists = [] # 关键词列表

61     with codecs.open(file_name,‘r‘,encoding=‘utf-8‘) as f:

62         Lists = f.readlines() # 文本列表

63         for List in Lists:

64             cut_list = list(jieba.cut(List))

65             for word in cut_list:

66                 word_lists.append(word)

67     word_lists_set = set(word_lists) # 去除重复元素

68     sort_count = []

69     word_lists_set = list(word_lists_set)

70     length = len(word_lists_set)

71     print u"共有%d个关键词" % length

72     k = 1

73     for w in word_lists_set:

74         sort_count.append(w+u‘:‘+unicode(word_lists.count(w))+u"次\n")

75         print u"%d---" % k + w+u":"+unicode(word_lists.count(w))+ u"次"

76         k += 1

77     with codecs.open(‘count_word.txt‘,‘w‘,encoding=‘utf-8‘) as f:

78         f.writelines(sort_count)

79

80 def get_top_keywords(file_name):

81     top_word_lists = [] # 关键词列表

82     with codecs.open(file_name,‘r‘,encoding=‘utf-8‘) as f:

83         texts = f.read() # 读取整个文件作为一个字符串

84         Result = analyse.textrank(texts,topK=20,withWeight=True,withFlag=True)

85         n = 1

86         for result in Result:

87             print u"%d:" % n ,

88             for C in result[0]: # result[0] 包含关键词和词性

89                 print C,u"  ",

90             print u"权重:"+ unicode(result[1]) # 关键词权重

91             n += 1

92

93 # 绘制词云

94 def draw_wordcloud():

95    with codecs.open(‘pjl_comment.txt‘,encoding=‘utf-8‘) as f:

96        comment_text = f.read()

97    cut_text = " ".join(jieba.cut(comment_text)) # 将jieba分词得到的关键词用空格连接成为字符串

98    d = path.dirname(__file__) # 当前文件文件夹所在目录

99    color_mask = imread("F:/python2.7work/wordcloud/alice_color.png") # 读取背景图片

100    cloud = WordCloud(font_path=path.join(d,‘simsun.ttc‘),background_color=‘white‘,mask=color_mask,max_words=2000,max_font_size=40)

101    word_cloud = cloud.generate(cut_text) # 产生词云

102    word_cloud.to_file("pjl_cloud.jpg")

103

104

105

106 if __name__ == ‘__main__‘:

107     ‘‘‘

108     url = ‘https://movie.douban.com/subject/26630781/comments?start=10581&limit=20&sort=new_score‘

109     get_douban_comments(url)

110     file_name = ‘pjl_comment.txt‘

111     get_top_keywords(file_name)

112     ‘‘‘

113     draw_wordcloud()

原文地址:https://www.cnblogs.com/programer-xinmu78/p/10661213.html

时间: 2024-08-03 17:29:38

python对影评进行评论分析,形成词云图的相关文章

词云图

https://www.jianshu.com/p/4fb27471295f 现成工具 https://blog.csdn.net/zhchs2012/article/details/79062632 用Python绘制词云图 - CSDN博客 blog.csdn.net 基于我之前爬取的微博数据,制作了一批词云图,由此来讲讲此模块的使用. 分词之前先准备一下停止词,因为中文中有很多的语气词啊,副词啊等,对于我们展现词频热度是无意义的干扰词.于是,我们就想个法子把他们 ... https://b

特朗普退出《巴黎协定》:python词云图舆情分析

1 前言 2017年6月1日,美国特朗普总统正式宣布美国退出<巴黎协定>.宣布退出<巴黎协定>后,特朗普似乎成了“全球公敌”. 特斯拉总裁马斯克宣布退出总统顾问团队 迪士尼董事长离开总统委员会 谷歌等25家大公司联名刊发整版广告:美国不应退出巴黎协定 法国总统马克龙:特朗普宣布退出<巴黎协定>是“错误”之举 …… 在此背景下,本文以python词云图分析的方式来了解下相关情况. 2 特朗普演讲内容分析 首先来看下特朗普宣布退出<巴黎协定>时都说了啥. 特朗普

python 爬取视频评论生成词云图

首先爬取评论写入文件,用上一篇爬取腾讯是视频的评论的方法提取评论http://blog.51cto.com/superleedo/2126099 代码需要稍作修改如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import re import urllib.request import time import urllib.error ##模拟浏览器安装headers headers=("User-Agent","Mozil

用词云图分析一带一路峰会哪3个词说的最多

前言 最近几日关注度最高的新闻莫过于一带一路峰会相关的消息,会议结束后,一带一路峰会联合公告已经公布出来了.本文通过词云分析,了解本次公告以及习大大在峰会开幕式上主要都讲了哪些关键内容. 1 一带一路峰会联合公告词云图 5月17日公布的一带一路峰会联合公告的词云分析结果图,如下: 词云图上,字体越大表示该词语在文件中出现的次数越多. 从上图可以看出,出现次数最多的3个词语为“合作”.“我们”以及“加强” ,基本可以看出,本次峰会是一个新的起点,今后需要做的事情还很多,需要各方务实合作,哈. 2

用python给女朋友做一个歌曲词云图

目录 一 什么是词云 二 制作词云的步骤 4 科比词云图制作测试代码1 -- coding:utf-8 - 生成词云 三 案例 网易云歌手房东的猫词云图 1 整体流程图 2 爬取+词云制作 今天咋们来看看网易云赵雷的歌曲歌词,并做一个词云图.这篇文章可以学习到什么是词云,爬虫的基本流程,简单的可视化操作 @ 一 什么是词云 可视化有很多种,好的数据可视化,可以使得数据分析的结果更加通俗易通."词云"属于可视化的一种,它会根据关键词的出现频率生成一幅图,这样可以让我们一眼就知道其主要要点

【Python成长之路】词云图制作

[写在前面] 以前看到过一些大神制作的词云图 ,觉得效果很有意思.如果有朋友不了解词云图的效果,可以看下面的几张图(图片都是网上找到的): 网上找了找相关的软件,有些软件制作 还要付费.结果前几天在大神的公众号里的文章中看到了python也能实现,而且效果也很不错 .那还等什么,不赶紧盘它? [示例代码] 1 # coding=utf-8 2 # @Auther : "鹏哥贼优秀" 3 # @Date : 2019/7/31 4 # @Software : PyCharm 5 impo

Python实现Wordcloud生成词云图的示例

wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前,首先要做一些准备工作 1.安装结巴分词库 pip install jieba Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型. 下面我来简单介绍一下结巴分词的用法 结巴分词的分词模式分为三种: (1)全模式:把句子中所有的可以成词的词语都扫描出

python数据结构与算法 38 分析树

分析树 树的结构完成以后,该是时候看看它能做点什么实事儿了.这一节里,我们研究一下分析树.分析树能够用于真实世界的结构表示,象语法或数学表达式一类的. 图1 一个简单语句的分析树 图1所示是一个简单语句的层级结构,把语句表示为树结构可以让我们用子树来分析句子的组成部分. 图2 ((7+3)?(5?2))的分析树 我们也可以把数学表达式如((7+3)?(5?2))表示为分析树,如图2.此前我们研究过完全括号表达式,这个表达式表达了什么呢?我们知道乘法的优先级比加减要高,但因为括号的关系,在做乘法之

python编写网络抓包分析脚本

python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 decoder,但是它的架构并不灵活,如果你要加入一个自己定义的的解码器,得去修改Ethereal的代码,再重新编译,相当的烦琐 对于一般的明文协议,没有什么问题,但是对于加密协议,比如网络游戏,客户端程序一般会在刚连接上的时候,发送一个随机密钥,而后的报文都会用这个密钥进 行加密,诸如此类.要想