本文轉(zhuǎn)自微信官方賬號數(shù)據(jù)森林
前言
搬到Python半年,接觸爬蟲兩個月,看了10本相關(guān)的書,完成了這項工作,這是對我過去學(xué)習(xí)和實踐的回顧。也希望能和更多的python和爬蟲愛好者交流成長。
選擇這個題目,首先是把豆瓣作為爬蟲引入,對各種大牛的深入分析變得完善;另一方面,隨著中國電影業(yè)的發(fā)展,我們需要將視角轉(zhuǎn)向國際市場,通過數(shù)據(jù)分析找出外國人感興趣的電影。
數(shù)據(jù)抓取
網(wǎng)頁分析
IMDBtop250主頁
IMDB電影詳細(xì)信息頁面(1)
IMDB電影詳細(xì)信息頁面(2)
基于上面的網(wǎng)頁結(jié)構(gòu),我們發(fā)現(xiàn)我們只需要得到每部電影的詳細(xì)頁面代碼(唯一),實現(xiàn)詳細(xì)頁面(1)(2)導(dǎo)出國家&:類型,分?jǐn)?shù)&:獲取人數(shù)信息。簡單易懂,抓取思維導(dǎo)圖如下:
爬蟲代碼
01
IMDB top250主頁
#導(dǎo)入庫-導(dǎo)入庫-導(dǎo)入庫
fromurllib importrequest
fromchardet importdetect
來自bs4導(dǎo)入美化組
進(jìn)口熊貓aspd
importtime
importrandom
#獲取網(wǎng)頁的源代碼并生成soup對象。
定義湯(url):
withrequest.urlopen(url) asfp:
byt = fp.read()
det =檢測(字節(jié))
time.sleep(random.randrange( 1,5))
return美化組(byt.decode(det[ 'encoding']),' lxml ')
#解析數(shù)據(jù)-。
定義數(shù)據(jù)(湯):
#獲得評分
ol = soup.find( 'tbody ',attrs = { 'class': 'lister-list'})
score_info = ol.find_all( 'td ',attrs={ 'class': 'imdbRating'})
film_scores = [k.text.replace( 'n ',' ')fork inscore_info]
#獲取分?jǐn)?shù)、電影名稱、導(dǎo)演和演員、發(fā)行年份和詳細(xì)信息鏈接
film_info = ol.find_all( 'td ',attrs={ 'class': 'titleColumn'})
film _ name =[k . find(' a ')。文本叉infilm_info]
film_actors = [k.find( 'a ')。attrs[ 'title'] fork infilm_info]
film_years = [k.find( 'span ')。text[ 1: 5] fork infilm_info]
next_nurl = [url2 + k.find( 'a ')。attrs[' href '][0:17]fork in film _ info]
數(shù)據(jù)=pd。data frame({ ' name ':film _ name,' year':film_years,' score':film_scores,' actors':film_actors,' newurl':next_nurl})
returndata
02
IMDB top250電影詳細(xì)信息頁面
#獲取詳細(xì)的頁面數(shù)據(jù)-。
定義下一個網(wǎng)址(詳細(xì)信息,詳細(xì)信息1):
#得到電影國家
detail_list = detail.find( 'div ',attrs={ 'id':'titleDetails'})。find_all( 'div ',attrs={ 'class':'txt-block'})
detail_str = [k.text.replace( 'n ',' ')fork indetail_list]
detail _ str =[k fork Inde tail _ str ifk . find(':')& gt;= 0]
detail _ dict = { k . split(':')[0]:k . split(':')[1]fork Inde tail _ str }
country = detail_dict[ 'Country']
#獲取電影類型
detail_list1 = detail.find( 'div ',attrs = { ' class ':' title _ wrapper ' })。find_all( 'div ',attr = { ' class ':' subtext ' })
detail_str1 = [k.find( 'a ')。indetail_list1]中的文本分叉
movie_type=pd。數(shù)據(jù)幀({“類型”:detail_str1})
#按組獲取電影的詳細(xì)分?jǐn)?shù)和數(shù)量
div_list = detail1.find_all( 'td ',attrs= { 'align': 'center'})
value = [k.find( 'div ',attrs = { ' class ':' big cell ' }). text . strip()fork indiv _ list]
num = [k.find( 'div ',attrs = { ' class ':' small cell ' }). text . strip()fork indiv _ list]
分?jǐn)?shù)=pd。DataFrame({ 'value':value,' num':num})
返回國家,電影類型,分?jǐn)?shù)
數(shù)據(jù)顯示
最后,我們獲得了以下數(shù)據(jù),并將其存儲起來供后續(xù)分析使用:
數(shù)據(jù)分析
01
電影類型比較
首先,讓我們看看每種類型的電影所占的比例:
前250名電影的前三種類型是喜劇、犯罪和動作片。
激動的情緒和輕松的劇情可以給粉絲帶來難忘的觀影體驗。
我們來看看各種類型電影的評分對比:
從類型來看,西方電影之所以騎在塵埃上,可能與觀眾少、狂放的粉絲分?jǐn)?shù)高有關(guān)。其次,犯罪、動作、冒險、推理和恐怖題材也容易得分較高
02
年份比較
首先,我們來看看250強(qiáng)電影的年份:
在前250部電影中,1957年、1995年和2014年的電影較多,但1975年后,上榜電影數(shù)量明顯增加,這可能與電影行業(yè)日益成熟有關(guān)。
至于1995年,熟悉電影的朋友可能都知道,1995年是世界電影百年,無數(shù)電影天才在這一年里誕生了他們的偉大作品。我們熟悉《肖申克的救贖》《阿甘正傳》《低俗小說》《四婚禮一葬禮》《七宗罪》《獅子王》等等
同時,我們來看看各個年代電影的評價分?jǐn)?shù):
對比電影時代評分,沒有明顯的上升或下降趨勢,說明電影藝術(shù)不會隨著時間而失去自身的價值。對于電影來說,技術(shù)不是第一位的,情感共鳴因素占的權(quán)重更大;哪部電影最好看?答案在于我們每個人。
03
國家比較
讓我們來看看來自各個國家的電影在250部電影中所占的比例:
這個數(shù)字很有意思。有點(diǎn)像諾貝爾獎。美國電影占據(jù)半個國家,其他國家瓜分剩下的蛋糕。排名靠前的是英國、法國、日本和德國。在中國,唯一上榜的電影是《花樣年華》。
如果是由于西方主流價值觀,同樣是東方文化代表的鄰國日本有16部電影上榜,說明西方價值觀不能成為中國電影缺失的主要原因。近年來,國內(nèi)出現(xiàn)了很多高質(zhì)量的作品,如《大魚海棠》和新上映的《流浪地球》,但在國際市場的反響依然平平。我相信電影有共同語言,真的有普世價值這種東西。如何打造一個國際化的電影產(chǎn)業(yè),給全世界的人講故事,是中國電影人接下來需要探索的話題。
04
導(dǎo)演比較
讓我們看看最常出現(xiàn)在250強(qiáng)名單中的導(dǎo)演:
我們來看看名單上有哪些作者。鑒于可能大家都不太熟悉外國董事的名字,這里做一個董事代表對照表。值得注意的是,雷德利·斯科特(Redley Scott)、詹姆斯·卡梅隆(James Cameron)和大衛(wèi)·芬奇(David Finch)分別執(zhí)導(dǎo)了《異形1》、《異形2》和《異形3》,其中一部《異形》有三位導(dǎo)演上榜,可見其系列影響力。沒看過的小伙伴強(qiáng)烈建議去看一看,雖然味道可能比較重。
05
人口比較
首先,我們來看看不同人的分?jǐn)?shù):
從性別維度來說,男性比女性更容易給出高分。另一方面,從年齡方面來說,無論男女,未成年人最容易給高分。隨著年齡的增長,分?jǐn)?shù)越來越有吸引力,45歲以上的給出的分?jǐn)?shù)最低。一顆堅硬的心,過了海就很難被感動嗎?又或許一部電影只有見多識廣才能得到公正客觀的評價?也許可以研究一下這個問題,比如《電影節(jié)評委年齡組科學(xué)分配方法》。
但是,了解評分情況,還需要了解各種人群的比例:
“老叔叔”“老阿姨”雖然分?jǐn)?shù)低,但也沒必要太擔(dān)心這些人。因為數(shù)據(jù)告訴我們,要滿足30-44歲和18-29歲年齡段的中青年男性的口味,電影口碑肯定不差。近年來,《狼勇士》《紅海行動》等戰(zhàn)爭動作片口碑不錯,評分機(jī)制我們也略知一二。
06
類型、年齡與分?jǐn)?shù)的關(guān)系
首先,我們用熱圖來看不同人群對不同類型電影的評分:
不同年齡段對電影類型有不同的偏好。例如,未成年男女對推理和西方電影表現(xiàn)出濃厚的興趣,而超過45名男女分別喜歡科幻和黑色電影。
分?jǐn)?shù)的高低也需要結(jié)合比例綜合分析:
這一次,我們將數(shù)據(jù)粒度細(xì)化到各個年齡段,并結(jié)合各個年齡段的分?jǐn)?shù)。下面我們給大家推薦250強(qiáng)榜單中各個年齡段的電影。
電影推薦
未成年男性(
18-29歲的男性
30-44歲的男性
45歲以上男性
未成年女性(
18-29歲的女性
30-44歲的女性
45歲以上女性
以上電影根據(jù)IMDBtop250數(shù)據(jù)推薦。如有不符,請在此表示歉意。畢竟美國人的喜好和中國不一樣。
最后,我以《三體》中的一首詩結(jié)束:
我看到了我的愛
我飛到她身邊
我給了她一份禮物
那只是凝固時間的一小部分
時間里有美麗的條紋
感覺像淺海里的泥一樣柔軟
她把時間涂在全身
然后拉著我飛向存在的邊緣
這是一次精神飛行
我們眼中的星星就像幽靈
我們就像星星眼中的幽靈
微信官方賬號后臺回復(fù)“Movie”,可以得到這篇文章的源代碼。
1.《imdb250 豆瓣已玩爛,這次我們爬取了IMDB電影Top250后發(fā)現(xiàn)...》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《imdb250 豆瓣已玩爛,這次我們爬取了IMDB電影Top250后發(fā)現(xiàn)...》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/guoji/986653.html