前言
隨著國內疫情得到有效控制,每個地區的電影院都陸陸續續的開放了,而很多本應該在春節檔上映的電影因為疫情撤檔,現在也重新上映了,
很多人學習python,不知道從何學起,
很多人學習python,掌握了基本語法過后,不知道在哪里尋找案例上手,
很多已經做案例的人,卻不知道如何去學習更加高深的知識,
那么針對這三類人,我給大家提供一個好的學習平臺,免費領取視頻教程,電子書籍,以及課程的源代碼!??¤
QQ群:623406465
想必和不少小伙伴一樣,我一直對《姜子牙》滿懷期待,于是,國慶第2天我便殺入影院,而關于《姜子牙》的評價呈現了兩極分化,而它也經常被拿來和去年上映的《哪吒》對比,關于電影本身,我不做過多評價,主要是從資料的角度出發,把《姜子牙》和《哪吒》進行一個對比分析,
一、票房對比分析
兩部電影的基本情況如下:
姜子牙哪吒2020年10月1日(上映10天)2019年7月26日(上映443天)
1、獲取票房資料
為了使得資料統一,我選取上映的前9日的票房資料(將持續更新):
注:票房資料來源于網路,不保證完全準確
2、票房走勢分析
利用pandas庫對票房資料進行分析,并繪制折線圖:
import pandas as pd import matplotlib.pyplot as plt # 票房分析 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來正常顯示中文標簽 data = pd.read_excel('票房資料.xlsx',index_col=0) data.plot(style='.-.') plt.title('票房資料') plt.ylabel('票房(億元)') plt.xlabel('上映時間') plt.savefig('票房資料.png')
其中,index_col=0表示將第一列作為索引,運行結果如下:
從圖可以看出(僅代表個人觀點):
- 首映當日《姜子牙》票房明顯高于《哪吒》,這大概是源于觀眾的期待,這也說明前期的宣傳作業做到位了;
- 從走勢來看,《姜子牙》呈現出明顯下滑,這大概是因為上映后口碑上出現了兩級分化,電影本身沒有到達觀眾原本的期待;
- 從走勢來看,《哪吒》后續走勢強勁有力,這大概是因為上映后《哪吒》作為國產動漫的代表口口相傳,吸引了越來越多的觀眾
二、評價對比分析
這一部分主要是對觀眾的影評進行分析,評價資料來源于某瓣,
Tip:本文僅供學習與交流,切勿用于非法用途!!!
1.爬取影評
在網站簡單搜索之后可以發現一個電影短評的介面:
https://movie.douban.com/subject/26794435/comments?start=20&limit=20&status=P&sort=new_score
其中,26794435表示電影的編號;start引數表示評論起始位置;limit表示每次請求的評論數,
1.1 獲取評論頁面
def get_comment(mid,page): ''' 獲得評論頁面的HTML ''' start = (page-1)*20 url = 'https://movie.douban.com/subject/%s/comments?start=%d&limit=20&status=P&sort=new_score'%(mid,start) headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1'} cookies = {} res = requests.get(url,headers=headers,cookies=cookies) html = res.text return html
注:請求需要帶上登陸后的cookies,否則將只能獲取10頁的評論
1.2 決議頁面中的評論
def parse_comment(html): ''' 決議HTML中的評論 ''' comment = re.findall('<span >(.*?)</span>',html) return comment
這里就是一個簡單的正則匹配,就不過多解釋了
1.3 定義爬取函式
def crawl_comment(mid,N,name): ''' 爬取指定頁數的評論,并保存在本地 ''' comments = [] for p in range(1,N+1): html = get_comment(mid,p) comment = parse_comment(html) comments.extend(comment) print('《%s》第%d頁評論爬取完成(%d條)'%(name,p,len(comment))) time.sleep(random.uniform(3,5)) with open('%s.txt'%name,'w') as f: f.write(json.dumps(comments))
注:time.sleep()很重要,否則請求過于頻繁將觸發安全機制,導致403
1.4 完整代碼
# -*- coding: utf-8 -*- """ Created on Sat Oct 10 12:01:35 2020 @author: kimol_love """ import re import time import json import random import requests # 定義相關函式 def get_comment(mid,page): ''' 獲得評論頁面的HTML ''' start = (page-1)*20 url = 'https://movie.douban.com/subject/%s/comments?start=%d&limit=20&status=P&sort=new_score'%(mid,start) headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1'} cookies = {} res = requests.get(url,headers=headers,cookies=cookies) html = res.text return html def parse_comment(html): ''' 決議HTML中的評論 ''' comment = re.findall('<span >(.*?)</span>',html) return comment def crawl_comment(mid,N,name): ''' 爬取指定頁數的評論,并保存在本地 ''' comments = [] for p in range(1,N+1): html = get_comment(mid,p) comment = parse_comment(html) comments.extend(comment) print('《%s》第%d頁評論爬取完成(%d條)'%(name,p,len(comment))) time.sleep(random.uniform(3,5)) with open('%s.txt'%name,'w') as f: f.write(json.dumps(comments)) # 爬取姜子牙評論 crawl_comment('25907124',25,'姜子牙') # 爬取哪吒評論 crawl_comment('26794435',25,'哪吒')
2.詞云分析
利用python的jieba庫和wordcloud庫對評論進行分析,繪制出詞云,其中相應庫的安裝如下:
pip install jieba
pip install wordcloud
2.1 完整代碼
# -*- coding: utf-8 -*- """ Created on Sat Oct 10 12:22:53 2020 @author: kimol_love """ import json import jieba from wordcloud import WordCloud # 定義相關函式 def create_wordcloud(comments,name): ''' 根據評論串列創建詞云 ''' content = ''.join(comments) wl = jieba.cut(content,cut_all=True) wl_space_split = ' '.join(wl) wc = WordCloud('simhei.ttf', background_color='white', # 背景顏色 width=1000, height=600,).generate(wl_space_split) wc.to_file('%s.png'%name) # 詞云資料分析 with open('姜子牙.txt','r') as f: comments_jiang = json.loads(f.read()) create_wordcloud(comments_jiang,'姜子牙評論') with open('哪吒.txt','r') as f: comments_ne = json.loads(f.read()) create_wordcloud(comments_ne,'哪吒評論')
先利用jieba對評論進行分詞處理,再利用wordcloud對詞頻進行統計并繪制出詞云
2.2 結果展示
- 《姜子牙》評論詞云:
可以看出:在關于《姜子牙》的評論中,往往會伴隨著與《哪吒》的比較,同時,其中的劇情、故事也是大家比較關注的一個問題
- 《哪吒》評論詞云:
可以看出:在關于《哪吒》的評論中,大家往往涉及到了國產、影片等關鍵詞,而這也與大家對《哪吒》的主流定位不謀而合,
彩蛋
本篇文章的原創并不是我,是CSDN@不正經的kimol君,說實話我接觸的python內容并不多,當我在日常閑逛CSDN的程序中,無意發現了這篇“學以致用的典范”,于是與kimol君簡單閑聊,獲得了轉載的權限,
看著別人的代碼執行得相當順利,自己也跟著操作了一遍,但是發現了不少問題,想到肯定還有好多小伙伴也避不開踩坑的程序,于是我就將問題及對應的解決方案記錄了下來,
First
首先科普一下:
python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫
因為我們的票房資料是存放在以.xlsx結尾的excel檔案,當我們沒有事先安裝過xlrd模塊,直接通過pandas物件.read_excel方法去讀取檔案就會出現以下例外:
ImportError: Missing optional dependency ‘xlrd’. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.
解決方法相當簡單,通過pip安裝一下xlrd模塊即可
pip install xlrd
Second
大家在將評論資料寫入到 txt 文本檔案的時候,打開會發現里面是類似這樣的字符:
\u5367\u69fd\u5c45\u7136\u770b\u54ed\u4e86\uff0c\u8fd9
作為萌新,一開始我也是相當納悶,python默認的編碼就是 ‘UTF-8’,沒問題啊
后面在向度娘詢問之后終于發現了問題:
中文寫入txt、json檔案是無非就是open()檔案時,需要添加utf-8,dump()時,需要添加ensure_ascii=False,防止ascii編碼
好吧,果然一看之前的代碼,json.dumps果然沒有指定 ensure_ascii ,指定完之后運行后檔案中的內容就正常了,
這里給大家展示一些評論:
哪吒.txt
臥槽居然看哭了,這才是貨真價實的國漫新希望,終于不再是假大空的中國風堆砌,而開始借神話寓言塑造真正的“小人物”
背負原罪的出身,命中注定的死期,對存在的篤定和身份的動搖,竟指向《刺客聶隱娘》的內核:一個人,沒有同類,
完整的世界觀構建,父子母子師徒兄弟友敵,每一段關系都處理的有血有肉全無敷衍,美術剪輯配樂動作設計,處處都是亮點,就連喜劇部分也絕非裝瘋賣傻而存在無數細節作為支撐,
海邊夕陽踢毽和社稷圖虛幻仙境兩部分堪稱絕美段落,飛馳想象力和一流制作實力的結合,值得一刷再刷,
嚴格說是四星電影,但愿意加滿五星狂推鼓勵!
牛逼!牛逼!牛逼!4年前翻著白眼看完了《大圣歸來》,4年后熱淚盈眶地看完這部《哪吒之魔童降世》,
沒想到2019不僅僅是中國科幻大片元年,本片更是和《白蛇:緣起》一塊兒創造了國產動漫作品前所未有的高潮,
扎實的故事,生動的角色,飽滿的情緒,炸裂的場面,這一切都構成了110分鐘云霄飛車式的、暢快淋漓的觀影體驗,
表面上是哪吒的傳奇,骨子里面是《絕代雙驕》+《悟空傳》,毀天滅地的逆天氣勢更是燃破天際,
好一曲震撼人心的“冰與火之歌”!都給老子去看!,
姜子牙.txt
申公豹:“姜子牙,你保護世界,我保護你,
我再說一遍,畫面再好都是虛的,能撐起一部電影的內涵最重要的絕不是特效,而是故事內涵和劇情,各位對國漫真是太寬容了,這么多年依舊如此,
比《哪吒》成熟度高很多,平衡得也更好,天朝終于有了一部高級的3D影片電影了,
既然是全新的故事和設定那就不要披封神演義的皮啊,
聽導演專訪本片是刪減后的次成品,想闡釋的主題是神需被貶入凡間以人的視角經歷蒼生,才能明白蒼生,
此片本質上已是成人影片,甚至有點暗黑恐怖元素,
劇本確實與主題撕裂,不知道是否是時長閹割妥協于資本排片的緣故,有種商業與文藝片之間強行摻雜的模糊感!
但片中那些對生靈與普羅大眾的悲憫情節著實升華了此片的立意!
不知道大家看完有什么感想,歡迎在評論區留言~
Third
我們在將評論資料保存在.txt文本的時候,如果指定了encoding=“utf-8”,那么我們在讀取的時候也要指定with open('xxx.txt', 'r', encoding="utf-8"),否則就會報錯~
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xaf in position
結語
本篇文章就到這里,有任何好的想法或者建議都可以在評論區留言,在最美的年華,做最好的自己,我是00后Alice,我們下一期見~~
一鍵三連,養成習慣~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/185761.html
標籤:其他
上一篇:Python+可視化工具,如何才能做出優美的動態圖表?
下一篇:【C++】 C++例外捕捉和處理
