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

news/2024/11/22 6:45:57/

最近《寻梦环游记》刷爆朋友圈,一心只想学习的我,并没有去看,但是还是很想知道这个电影是讲的什么。怎么办呢,所谓把大象放进冰箱分三步。要知道这个电影讲什么也可以分三步:
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”、“死亡并不可怕”都是被提及很多的词,应该是电影的主题。

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

这里写图片描述


http://www.ppmy.cn/news/407874.html

相关文章

格列佛游记思维导图

最近很多人都怀念经典,小时候,我相信大部分人都是看过格列佛游记的,我在这里将格列佛游记用xmind思维导图稍微整理了下。 雷米尔鲁•格列佛生于洛丁加姆州,从十四岁开始在英国与荷兰的大学中念书,后来以外科医生的身份…

看完《寻梦环游记》,40岁的我哭的像个小孩

今天想谈谈感情的事情。比如谈个恋爱,和谁谈? 和大猩猩、亡灵,还是机器人? 别笑。 在电影世界中,一切皆有可能。 最感动人的情感不是在人类之间,而是在“非人类”之间。 正在热映的《寻梦环球记》&#xff…

ai背景合成_AI突破次元壁又火了!飞屋环游记动漫角色一秒变真人,网友:小罗的“猫王发型”有点酷...

真人版动漫电影,还是AI生成的角色靠谱。 ” 作者 | 贝爽 从“换脸”到“生成漫画脸”,AI在图像合成方面的技术已经非常成熟了。 因为支持一键切换,而且效果逼真,之前抖音的一款「变身漫画」特效还登上微博了热搜,从明星…

寻梦环游记720P

为了下载资源不被xx,你懂的,请扫描下方二维码关注,然后发送关键字:“寻梦环游记” 获取下载地址。 电影观看 10月23日,皮尔斯官方微博发布电影《寻梦环游记》 的最新预告片,并确定了影片最终定档于11月24号在国内上映…

《寻梦环游记》观后感

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

美翻你的朋友圈,Python生成蒙太奇马赛克图片

一、前言 我们有时候会听到这么一个词–“蒙太奇”,但却不知道这个词是什么意思。蒙太奇原为建筑学术语,意为构成、装配。而后又延伸为一种剪辑理论:当不同镜头拼接在一起时,往往又会产生各个镜头单独存在时所不具有的特定含义。…

UE4/5样条线学习(三):样条线与时间轴

目录 简单的小模板 物品跟随样条线移动 粒子特效类: 简单的小模板 通过之前的案例,我们可以直接创建一个actor蓝图,加上要用的样条组件: 然后我们就可以通过时间轴做出不同的一些效果 在蓝图中找到时间轴的这个节点 双击时间…

便携本市场一片混乱 东芝也加入战斗

东芝也已发表了自己的Netbook产品,杀入了这一原本就已厂商众多而销路令人怀疑的,混乱不堪的市场,Satellite NB105就是他们的第一款作品.它采用1.6GHz Atom处理器,1GB内存,120GB硬盘(也可换SSD),Wi-Fi,LAN支持,无蓝牙和3G,Windows XP Home系统,8.9英寸1024x600分辨率,11月份首先…