因新冠肺炎的影响,今年的1月27号,国内的各大影院全部都关门歇业,7部春节档电影全部撤档。到今天为止,我们已经170多天没有走进电影院了。
这半年对于中国电影来说,毫无疑问是中国电影史上最至暗的半年。整个上半年,内地电影总票房维持在22.42亿,并且从农历大年初一开始,这个数字一直就没有变过。跟去年同期313.26亿的成绩,同比下跌92.8%。这个跌幅数字,也让电影行业成为了今年受疫情影响最高的行业之一。
好消息是,国家电影局今天发布通知:低风险地区在电影院各项防控措施有效落实到位的前提下,可于7月20日有序恢复开放营业。
电影院重开,将为整个产业注入强心针。想要看新电影的各位影迷们又可以走进影院了。那么,我们看到的第一部电影会是哪部呢?
这部电影的故事发生在地大物博风景壮丽的新疆,艾萨是一个从小到大都在这里长大的土生土长的新疆男孩。艾萨出生在一个并不富裕的家庭之中,母亲的患病让家里的经济条件雪上加霜,母亲的病不仅让她丧失了语言功能,还常常会离家出走不见踪迹,因此艾萨必须在上学之余格外小心的看护随时都会发生状况的母亲,因为艾萨深深的爱着自己的母亲,所以这点苦他从来都不放在心上。
凯丽比努尔是艾萨最好的朋友,艾萨遇到了什么烦心事第一个想到的就是和她倾诉,两人还共同养育着一只小羊。人生海海,每一步都是两人相互扶持着走过,一路上留下最美好的回忆。
那么这部电影究竟怎么样呢,不妨看一下严苛的豆瓣影迷对它的评价。接下来我将爬取豆瓣的评论来进行分析。
爬取豆瓣评论
本文采用requests + Xpath,爬取豆瓣电影《第一次的离别》部分短评内容。话不多说,代码先上:
importrequests,time,random
from lxml import etree
import pandas as pd
urls='/subject/30337172/comments?start={page}&limit=20&sort=new_score&status=P&percent_type='
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
'Host':'',
'Referer':'/subject/30337172/comments?status=F',
'Upgrade-Insecure-Requests': '1'
}
data=[]
for i in range(0,200,20):
print(i)
url=urls.format(page=i)
html=requests.get(url,headers=headers,cookies=cookie)
# print(html.status_code)
selector=etree.HTML(html.content)
comments=selector.xpath("//div[@class='comment']")
for each in comments:
datum={}
nickename=each.xpath("./h3/span[@class='comment-info']/a/text()")[0]
watched=each.xpath("./h3/span[@class='comment-info']/span[1]/text()")[0]
rating=each.xpath("./h3/span[@class='comment-info']/span[2]/@class")
if len(rating)>0:
rating=rating[0]
rating=rating[7]
comment_time=each.xpath("./h3/span[@class='comment-info']/span[3]/@title")
if len(comment_time)>0:
comment_time=comment_time[0]
else:
comment_time=rating
rating='没有评分'
votes=each.xpath("./h3/span[@class='comment-vote']/span[1]/text()")[0]
content=each.xpath("./p/span[1]/text()")[0]
datum['nickname']=nickename
datum['watched']=watched
datum['rating']=rating
datum['comment_time']=comment_time
datum['votes']=votes
datum['content']=content
data.append(datum)
time.sleep(random.randint(5,15))
df=pd.DataFrame(data)
df.to_csv('libie.csv')
不知是否触发了豆瓣的反爬机制,当爬取到第200条评论后,后面的评论就不让爬了,再后来豆瓣网站网页都不能访问了。
有时间可以试一下Selinum模拟用户操作,不知是否能绕过豆瓣的反爬机制。现在就先用这200条短评进行分析。
评分分布
统计评分数据,使用Seaborn绘柱状图。
importpandasaspd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("whitegrid")
sns.set_style("ticks"
plt.rcParams['font.sans-serif'] = [u'SimHei']
plt.rcParams['axes.unicode_minus'] = False
df=pd.read_csv("libie.csv",encoding="UTF-8")
star=df["rating"].value_counts()
print(star)
x=[1,2,3,4,5]
y=[3,11,62,88,25]
sns.barplot(x=x,y=y,palette="deep")
plt.title("《第一次的离别》评分分布")
plt.savefig("star.png")
plt.show()
总体而言,豆瓣影迷给这部电影的评价四星最多,其次是三星和五星,大概可知这部电影的豆瓣评分应该在7~8之间。
词云图
使用jieba分词处理评论,制作词云图。
import pandas as pd
import re
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
import numpy as np
import PIL.Image as Image
df=pd.read_csv("libie.csv",encoding="UTF-8")
comments=df["content"].values.tolist()
sigList=[]
for comment in comments:
comment=comment.strip().replace(" ","")
rep = pile("lfd+w*|[<>/=]")
comment = rep.sub("", comment)
print(comment)
sigList.append(comment)
text="".join(sigList)
print(text)
wordlist=jieba.cut(text,cut_all=True)
word_space_split=" ".join(wordlist)
print(word_space_split)
file_path='D:\logo.jpg'
coloring=np.array(Image.open(file_path))
my_wordcloud=WordCloud(background_color="white",max_words=2000,
mask=coloring,max_font_size=70,random_state=42,scale=2,font_path="C:\Windows\Fonts\STXINGKA.TTF").generate(word_space_split)
image_colors=ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis("off")
plt.savefig("wordcloud.png")
plt.show()
从图中可以看出,这是一部关于新疆,关于孩子,关于离别的故事。通过镜头,摄影,自然,这可能是一部有点偏纪录片的电影。
虽然不是商业大片,但是这可能是难得一见的关于新疆的电影,从新疆孩子的视角来讲述离别和成长。