主页 > 新闻 > Python > 技术讲解 公司新闻 招聘启示 Python 大杂烩 HTML教程 DIVCSS教程 IOS教程

我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥

辰乐科技 | 发布时间: 2018-04-07 23:38

原标题:我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥

截止到 8 月 20 日,《战狼Ⅱ》上映的第 25 天,它的票房已超 50 亿人民币,真正成为唯一一部挺进世界影史票房前 100 名的亚洲电影。

我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥

抛开爆炸的票房不说,电影还激起了观众各种情绪,甚至有人放狠话说:敢喷《战狼Ⅱ》的,要么是智障,要么是公敌,就是这么简单粗暴。

大家对《战狼Ⅱ》褒贬不一,纷纷在豆瓣短评上面留言,表达自己对这部电影的看法。尽管各路评论出街,媒体闹得沸沸扬扬,观众还是傻傻分不清楚哪边意见比较靠谱。

我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥

截至目前已经有超过十五万的评论,在你看评论的时候,你可能在一段时间里看到的大部分是表扬或者是贬低的评论。


那么通过浏览评论我们很难看出大家对于这部电影的总体情况。现在让我们通过数据分析的方法看看在这些评论中究竟发生了什么有趣的事情!


本文通过 Python 爬虫的方式获取数据,对豆瓣电影评论进行分析,制作了豆瓣影评的云图。

现在,让我们来看看,《战狼Ⅱ》评论里到底藏着哪些有趣的潜台词。

我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥

数据的获取

本文采用的是 Python 爬虫的方式获取的数据,用到的主要是 requests 包与正则包 re,该程序并未对验证码进行处理。

之前也爬取过豆瓣的网页,当时由于爬取的内容少,所以并没有遇到验证码的事情。

在写本文爬虫的时候,原以为也不会有验证码,但是当爬取到大概 15000 个评论的时候跳出来验证码。

然后我就想不就是十二万吗?最多我也就是输入大概十几次验证码,所以就没有处理验证码的事情。

但是接下来的事情就有点坑到我了,爬取 15000 左右评论并输入验证码的时候,我以为会接下来爬取到 30000 左右,可是才爬了 3000 左右就不行了,还是要输验证码。

然后就一直这样,跌跌撞撞,有时候爬取好长时间才需要验证码,有时候则不是。不过最后还是把评论爬取下来了。

爬取的内容主要是:用户名,是否看过,评论的星星点数,评论时间,认为有用的人数,评论内容。参看下图(用户名已隐藏):

这个是影评的起始页:豆瓣影评。

以下是 Python 爬虫的代码:

import requests

import re

import pandas as

pdurl_first='https://movie.douban.com/subject/26363254/comments?start=0'

head={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/59.0.3071.109 Chrome/59.0.3071.109 Safari/537.36'}

html=requests.get(url_first,headers=head,cookies=cookies)

cookies={'cookie':'你自己的cookie'} #也就是找到你的账号对应的cookie


reg=re.compile(r'') #下一页


ren=re.compile(r'(.*?).*?comment">(.*?).*?.*? (.*?).*? (.*?).*?title="(.*?)">.*?title="(.*?)">.*?class=""> (.*?)',re.S) #评论等内容


while html.status_code==200:

url_next='https://movie.douban.com/subject/26363254/comments'+re.findall(reg,html.text)[0]
zhanlang=re.findall(ren,html.text)
data=pd.DataFrame(zhanlang)
data.to_csv('/home/wajuejiprince/文档/zhanlang/zhanlangpinglun.csv', header=False,index=False,mode='a+') #写入csv文件,'a+'是追加模式
data=[]
zhanlang=[]
html=requests.get(url_next,cookies=cookies,headers=head)

以上代码注意设置你自己的 User-Agent,Cookie,CSV 保存路径等。


爬取的内容保存成 CSV 格式的文件,保存的文件内容如下:

我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥

数据清洗

本文用 R 语言来处理数据,虽然在爬取的时候已经非常注意爬取内容的结构了,但是还是不可避免的有一些值不是我们想要的。

比如有的评论内容会出现在评论者这一项中,所以还是有必要进行一下数据的清洗。


首先加载要用到的所有包:

library(data.table)
library(plotly)
library(stringr)
library(jiebaR)
library(wordcloud2)
library(magrittr)

导入数据并清洗:


dt<-fread(file.choose()) #导入数据
dt[,c("V8","V9","V10","V11","V12","V13"):=NULL] #删除空列

#一条命令清洗数据

my_dt<-dt[str_detect(赞成评论数,"d+")][评论有用=='有用'][是否看过=="看过"][五星数%in%c("很差","较差","还行","推荐","力荐")]

数据浅析

先来看一看通过星星数评论的情况:

plot_ly(my_dt[,.(.N),by=.(五星数)],type = 'bar',x=~五星数,y=~N)

我用Python爬了12万条影评,告诉你《战狼Ⅱ》都在说些啥

五角星的个数对应 5 个等级,5 颗星代表力荐,4 颗星代表推荐,3 颗星代表还行,2 颗星代表较差,1 颗星代表很差。

通过五角星的评论显而易见,我们有理由相信绝大部分观看者对这部影片持满意态度。

对评论结果的云图展示

首先我们应该先进行评论的分词:

相关热门文章

服务热线
<友情连结> 乐天堂线上娱乐/ 千赢娱乐在线,/ 亚洲城平台/