最近《寻梦环游记》刷爆朋友圈,一心只想学习的我,并没有去看,但是还是很想知道这个电影是讲的什么。怎么办呢,所谓把大象放进冰箱分三步。要知道这个电影讲什么也可以分三步:
1.登陆豆瓣
2.抓取所有短评
3.利用词云看看大家的评论集中在哪些点,就能大概了解电影类型,主题,大致内容。

一、模拟登陆豆瓣

因为豆瓣有反爬虫机制,不登录只能爬到第10页,无法获取更多的内容(练模拟登陆的本人,被豆瓣锁了两个号),本文用的post保单的方法进行登陆。

#by:大熊(xavier9410@163.com)import requests
from lxml import etree
from PIL import Image
from io import BytesIO
import random
import pandas as pd
import time
import sys
reload(sys)
sys.setdefaultencoding('utf8')# 获取验证码登陆
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) ''AppleWebKit/537.36 (KHTML, like Gecko)''Chrome/62.0.3202.94 Safari/537.36'}
session = requests.session()
login_request = session.get('https://www.douban.com/login', headers=headers)
selector = etree.HTML(login_request.content)
post_data = {'source': 'movie',  # 填写表单'redir': 'https://movie.douban.com/subject/20495023/','form_email': 'chengyx@hhu.edu.cn','form_password': '3594633abc','login': '登录'}
captcha_img_url = selector.xpath('//img[@id="captcha_image"]/@src')  # 获取验证码url
print captcha_img_url
try:if captcha_img_url != None:pic_request = requests.get(captcha_img_url[0])img = Image.open(BytesIO(pic_request.content))  # 打开验证码图片print '请输入你看到的字母:'img.show()string = raw_input('请输入验证码:')post_data['captcha-solution'] = stringcaptcha_id = selector.xpath('//input[@name="captcha-id"]/@value')  # 获取captcha_idpost_data['captcha-id'] = captcha_idprint(post_data)
except:passr = session.post('https://accounts.douban.com/login',data=post_data)  # 将表单信息post进行登陆
with open('logfile.log', 'w') as logfile:logfile.write(r.text)except:pass

二、爬取短评内容

本来是抱着爬9万条评论的心做的,结果每次爬到25页就不能爬了,纠结了两天,改链接改来改去都不行,后来发现豆瓣现在短评只显示到25页,后面就没有了。豆瓣你狠!

r = session.post('https://accounts.douban.com/login',data=post_data)  # 用session保持登陆状态
with open('logfile.log', 'w') as logfile:logfile.write(r.text)# 获取内容
page = 0
while True:try:username = []  # 用户姓名star_ratings = []  # 评级votecount = []  # 认为评论有用的人数comments = []  # 短评内容seetimes = []  # 评论时间if page==0:url='https://movie.douban.com/subject/20495023/comments?start=p'else:passr = session.get(url)html = r.text# 解析具体内容selector = etree.HTML(html)  # 解析所有页面的源码contents = selector.xpath('//div[@class="comment"]')nextp=selector.xpath('//div[@id="paginator"]/a/@href')if len(nextp)==1:nextpage=nextp[0]      #首页只有表示“后页”的一个hrefelif len(nextp)==2:nextpage="?default"    #末页有表示“首页”和“前页”的两个hrefelse:nextpage=nextp[2]      #中间页有表示“首页”、“前页”、“末页”的三个hreffor content in contents:user = content.xpath('.//h3/span[2]/a/text()')[0]  # 用户名print userwords = content.xpath('.//p/text()')[0].strip()star_rating = content.xpath('.//h3/span[2]/span[2]/@class')[0][7:8]vote = content.xpath('.//h3/span[1]/span/text()')[0]seetime = content.xpath('//h3/span[2]/span[3]/text()')[0]username.append(user)comments.append(words)star_ratings.append(star_rating)votecount.append(vote)seetimes.append(seetime)shortcom = {"username": username, "star_ratings": star_ratings,"votecount": votecount, "comment": comments,"seetimes": seetimes}houses_df = pd.DataFrame(shortcom)page += 1if page == 1:houses_df.to_csv('dbmvtest.csv', encoding="utf8")  # 写入第一页else:houses_df.to_csv('dbmvtest.csv', encoding="utf8", mode='a',header=False)  # 追加下一页print '.................正在抓取第' + '%d' % (page) + '页'url='https://movie.douban.com/subject/20495023/comments'+nextpagetime.sleep(random.uniform(1, 3))  # 间隔1-3秒抓一

于是,抓到如下评论:

三、生成词云

本来用datafram生成一些表格看上映期间每天评论数的表格,和做情感分析,但是数据有限就只做了词云。因为豆瓣短评是以评论热度(认为此评论有用的人数)来排序显示的,前25页评论基本能反映观众对电影的解读。

#coding=utf-8
from scipy.misc import imread
from os import path
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS,ImageColorGenerator
import csv#从CVS中读取短评所在列的内容
def readcontent(csv):with open('dbmvtest.csv','rb')as csvfile:reader=csv.DictReader(csvfile)column=[row['comment']for row in reader]   #加载表头为"comment"的列,即短评内容content="".join(column)return contentdef creatcloud(mvcontent):wordafterjieba=jieba.cut(mvcontent,cut_all=False)    #分词wordsplit="".join(wordafterjieba)BGI=imread('./coco.jpg')print "加载图片成功"#设置词云样式wc=WordCloud(width=1024,height=768,background_color="white",   #设置背景颜色mask=BGI,font_path='SourceHanSansCN-Normal.otf',  #设置字体max_words=300max_font_size=400,      #设置字体最大值random_state=50)wc.generate_from_text(wordsplit)img_colors=ImageColorGenerator(BGI)wc.recolor(color_func=img_colors)    #设置字体颜色为背景图片颜色plt.imshow(wc)plt.axis("off")plt.show()return wcif __name__ == '__main__':comment=readcontent(csv)pic=creatcloud(comment)d = path.dirname(__file__)     #获取当前文件路径pic.to_file(path.join(d,"dreamcloud.jpg"))print "..........已生成词云.........."

最终生成了如下词云:

从词语中能看到好几部动画片的名称《头脑特工队》、《僵尸新娘》、《飞屋环游记》等等,里面我就看过僵尸新娘,哈哈,不过能和僵尸新娘相提并论,这部电影很ok。“梦想”、“家庭”、“墨西哥亡灵节”、“remember”、“死亡并不可怕”都是被提及很多的词,应该是电影的主题。

后来发现好像不对,哈哈,没把句子切开,切开后重新生成时下面这样的:

大热片《寻梦环游记》到底在讲什么相关推荐

  1. 《寻梦环游记》背后:一出“硅谷”遇上“好莱坞”的好戏

    硅谷Live / 实地探访 / 热点探秘 / 深度探讨 现实总比电影精彩. 最近上映的动画片<寻梦环游记>(Coco),大家都看了吗?它简直要把小探的眼泪都赚光了好嘛.. 作为皮克斯动画公 ...

  2. 《寻梦环游记》教你打造独特的职场标签

    下面这部电影,我陪着女儿去影院看了两遍: 它的情节既离奇又合情,非常值得玩味. 每到亡灵节,亡灵们会踏上一座万寿菊花瓣铺成的桥,走上回家的路. 然而,不是每个人都如此幸福,埃克托就没有回家的资格:在通 ...

  3. 爬取寻梦环游记的评论生成词云

    本文从豆瓣电影中爬取寻梦环游记的评论作为生成词云的文本数据,废话不多说,走起. 准备数据 由于豆瓣的爬虫监测是比较严格的,一旦发现爬虫就会被BAN,但是我们可以通过预先登陆获取Cookies结合sle ...

  4. 计算机桌面背景寻梦环游记,《寻梦环游记 》海报及原画欣赏

    原标题:<寻梦环游记 >海报及原画欣赏 Pixar新作<COCO/寻梦环游记>11月24日上映后立马好评刷爆屏幕,在豆瓣上的评分甚至高达9.3分. 除了暖心催泪的故事情节,皮克 ...

  5. 怎么用python爬小说统计词频_python小练习爬取《寻梦环游记》评论并做词频统计...

    本来其实是想爬豆瓣电影上10几万条评论的,但后来ip被封了,换代理ip之类的还不熟练,还在学习中,所以先做时光网上10页评论的分析吧,虽然时光网上粗粗一看评论就短了很多,水了很多.主要是继续练习Bea ...

  6. 《寻梦环游记》观后感

    这是学习笔记的第 2058 篇文章 生活中会面临无数的民生问题,现任特首林郑月娥曾在施政报告里面曾写到:香港楼价高.租金贵,形成巨大的生活压力,是严峻的民生问题."不少人的目标就是尽量赚钱买 ...

  7. 皮克斯首款VR体验《寻梦环游记》登陆 Oculus Rift

    皮克斯第一款虚拟现实体验<Coco VR>已经正式上线,为Oculus Rift用户提供了下一部大型动画电影的幕后花絮.凭借其对社交元素的使用,<Coco VR>也是Oculu ...

  8. 近期大热的实时直播答题系统的实现思路与技术难点分享

    为什么80%的码农都做不了架构师?>>>    1.前言 HQ Trivia 号称直播答题的鼻祖,它是一款小知识互动游戏,由短视频社交鼻祖Vine的联合创始人拉斯-尤苏波夫和科林-克 ...

  9. DeFi Token 大热但我们想说:FOMO 是病,得治

    DeFi Token 火了,火的毫无道理,火的一塌糊涂. 从 6 月的 Compound 开始,到最近的 YAM.CRV,一个接着一个的 DeFi 币种此起彼伏的出现在大众的视野中,令人目不暇接. 和 ...

最新文章

  1. 创建一个Table View
  2. jQuery 原理的模拟代码 -4 重要的扩展函数 extend
  3. 【mysql解决方案】ERROR 1248 (42000): Every derived table must have its own alias
  4. python人工智能——机器学习——分类算法-朴素贝叶斯算法对新闻进行分类案例
  5. elasticsearch httpclient认证机制
  6. 奥林匹克数学竞赛教练员汇编,最牛奥数资料全集!
  7. spark应用程序转换_Spark—RDD编程常用转换算子代码实例
  8. Cloud一分钟 | 一脚踏入云计算2.0时代,京东云这回拼的是“朋友 圈”;8400万元私有云招标...
  9. 安装java 并配置环境变量_安装Java JDK并配置环境变量
  10. Unfolder使用教程:如何插入,删除和更新对象
  11. html浮动div同行显示,div已经设了over-flow:auto;为什么没有滚动条浮动元素不能同行显示了,怎么办...
  12. 求解汉诺塔问题(提示, 使用递归)
  13. 联想计算机安装系统,联想计算机重新安装系统的详细步骤?
  14. Karabiner Elements改键
  15. 790. 数的三次方根
  16. 如何把图片转换jpg格式呢?
  17. 如何将浏览器设置对应的国家?
  18. MOS管开关时的米勒效应
  19. Visual Studio 编译64位或32位程序
  20. Oracle数据库笔记

热门文章

  1. 梳理cartographer传感器数据流
  2. 泛微OA对接费控系统
  3. 跟燕青学Redis-Redis集群安装
  4. table中cellpadding=0 cellspacing=0 border=0属性CSS的定义方法
  5. 内存寻址:逻辑地址到物理地址转化
  6. python 框架tornado_PythonWEB框架之Tornado
  7. 超好用的图片压缩网站
  8. 什么是模块化?及其优缺点
  9. softmax与交叉墒层的实现原理以及梯度计算
  10. 涂鸦智能利润不及预期:股价暴跌18%,归母净利润-7866.30万美元