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

2 '''

3 抓取豆瓣电影某部电影的评论4 这里以《我不是潘金莲为例》5 网址链接:https://movie.douban.com/subject/26630781/comments6 为了抓取全部评论需要先进行登录7 '''

8 from selenium importwebdriver9 importtime10 importcodecs11 importjieba12 importjieba.analyse as analyse13 from wordcloud importWordCloud14 from scipy.misc importimread15 from os importpath16

17 defget_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 whileTrue:37 try:38 results = driver.find_elements_by_class_name('comment')39 for result inresults: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个评论" %count46 count += 1

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

48 print u'第%d页查找完毕!' %n49 n += 1

50 time.sleep(4)51 exceptException,e:52 printe53 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 defget_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 inLists:64 cut_list =list(jieba.cut(List))65 for word incut_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个关键词" %length72 k = 1

73 for w inword_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 defget_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 inResult: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 defdraw_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()

python电影名称词云_python wordcloud 对电影《我不是潘金莲》制作词云相关推荐

  1. python爬取b站弹幕分析_python爬取B站视频弹幕分析并制作词云

    目录1.分析网页 2.爬虫+jieba分词+制作词云2.1爬虫 2.2jieba分词 2.3制作词云 3.成品展示 4.完整代码 1.分析网页 视频地址:https://www.bilibili.co ...

  2. bilibili怎么设置弹幕数量_python爬取B站视频弹幕分析并制作词云

    1.分析网页 视频地址: www.bilibili.com/video/BV19E- 本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀. 这次我选取的是自己 唯一的爆款 ...

  3. 利用python制作漂亮的词云图_利用python制作词云,wordcloud神器你值得拥有

    相信许多人都看到过下面这样的词云图,词云图是一种很好的可视化工具,其作用主要是为了文本数据的视觉表示,既酷炫又能突出重点. 关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工 ...

  4. python学习笔记第一篇:Python3使用wordcloud制作词云报错OSError: cannot open resource和制作出的词云图乱码问题

    wordcloud制作词云时有关字体设置参数font_path = ""使用: 1.当使用电脑中不存在的字体时,运行程序会报错OSError: cannot open resour ...

  5. Python 爬虫实战(1):分析豆瓣中最新电影的影评并制作词云

    入门Python不久,想做个小项目练练手,碰巧最近一部国产电影<红海行动>反响不错,便萌生想法去抓取一下它最新的评论,并制作词云,来看看网页对这部电影的一些评价,接下来就是开始分析啦(分析 ...

  6. python爬取爱情公寓电影评论并制作词云

    python爬取爱情公寓电影评论并制作词云 前言:     一直想研究研究如何生成词云,今天抽点时间给大家分享一下制作词云的过程,本文重在研究词云如何制作,由于时间仓促,至于爬取的数据量不大,大家可自 ...

  7. plt图片输出 python_利用Python制作词云,wordcloud神器你值得拥有

    相信许多人都看到过下面这样的词云图,词云图是一种很好的可视化工具,其作用主要是为了文本数据的视觉表示,既酷炫又能突出重点. 关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工 ...

  8. python 只去除英文_如何使用 Python 制作词云(Word Cloud)-英文词云篇

    wordcloud 安装报错与解决 虽然网络上也有各种工具可以一键生成词云,但是使用Python制作词云感觉是一件很酷的事情.作为一个 Python 小白,使用 Python 的过程并不那么轻松.比如 ...

  9. Python 3.6 使用wordcloud制作词云(可设背景图像)

    在python 3.6环境中 使用wordcloud模块制作词云,首先在安装wordcloud模块,安装方法有几个,可参考安装方法与可能会遇到的问题 代码: #!/usr/bin/env python ...

最新文章

  1. 如何解决资料下载下来为index.html和PHP文件的问题?
  2. Andrej Karpathy发文谈神经网络后,引发的对硬件,软件和学件的思考
  3. noip2011提高组day1+day2解题报告
  4. 9月14日学习内容整理:初识别面向对象
  5. python二级考试答案分值_2018全国计算机二级考试内容 科目分值设置
  6. SAP系统中凭证涉及日期
  7. leetcode-260.只出现一次的数字 III 解法
  8. 在 Go 语言中 Patch 非导出函数
  9. [css] 什么是脱离文档流?有什么办法可以让元素脱离标准的文档流?
  10. mysql rpm 安装多实例_MySQL搭建系列之多实例
  11. 使用layui 做后台管理界面,在Tab中的链接点击后添加一个新TAB的解决方法
  12. 掘金企服:ICP经营许可证和ICP备案的区别
  13. 奇迹之剑萌新晋升大神辅助攻略 奇迹之剑游戏脚本挂机工具介绍
  14. web前端新手入门:中国互联网的发展史
  15. 互换性测量技术-几何误差
  16. 五、Dubbo监控中心
  17. 浅析Windows通信编程
  18. Cypress系列(43)- visit() 命令详解
  19. The Places of Our Lives: Visiting Patterns and Automatic Labeling from Longitudinal Smartphone Data
  20. ROS系统下webots安装

热门文章

  1. Android 仿微信语音聊天,正式加入字节跳动
  2. 介绍MSYS2 在windows下与使用
  3. 面向对象程序设计中对抽象的理解
  4. access两位小数不进位_文章列表-火龙的博客 - PHP,GO,MySQL知识分享问题记录博客...
  5. 慧正工作流注册码获取
  6. 记录下我在csdn做过的直播
  7. 联想G40进入BIOS
  8. Qt 设置弹出控制台终端
  9. C++ LinuxWebServer 2万7千字的面经长文(上)
  10. HIT 软件构造 lab3实验报告