佩奇撲街、外星人瘋狂!Python 告訴你大年初二應該看哪部電影

AI科技大本營發表於2019-02-06

640?wx_fmt=jpeg

作者 | 羅昭成

責編 | 唐小引

轉載自 CSDN資訊(ID:CSDNnews)


引言


2019 年 1 月,《啥是佩奇》短片在網際網路快速傳播,各大社交平臺形成刷屏之勢。不到 24 小時,官博發出的視訊已經收穫 2800 萬次觀看,14 萬次點贊,17 萬次轉發。

作為《小豬佩奇過大年》先導片,片中內容不僅引人深思,也把我們的視線拉了到春節檔電影。在外工作一年,難得的幾天閒暇時間,回到家裡,陪陪父母,看看孩子。可以和父母一起去看看電影,重溫一家人的溫暖。

扎堆上映的一大波影片讓我們眼花繚亂,在眾多電影中,我們應該選擇哪一步電影來看呢?下面,我們用資料來分析分析,看看其他人都在看啥電影,讓我們從選擇恐懼症中解放出來。


貓眼預售票房資料分析


之前文章不同,本次爬取的電影都還沒有上映,所以筆者將側重點從評論資料,轉移到了其他地方,來進行我們想要的資料分析。

首先我們先來看看,春節檔的票房資料,開啟貓眼專業版實時票房,我們可以看到某一天的票房資料。

640?wx_fmt=png

此圖截於大年三十晚,可以看到《飛馳人生》在大幅上升,已經趕超《流浪地球》

雖然能看到,但是要進行分析,還是不太方便,所以先把資料都抓取下來:

作者注:抓取分析資料截止時間為 2019-02-03 18:38:49,並非最新資料,可能存在誤差。

  • 使用 Chrome 的除錯模式,在網路請求中可以看到獲取實時資料的網路請求:

https://box.maoyan.com/promovie/api/box/second.json?beginDate=20190205

拿到介面,就可以很簡單地將資料拿下來,並儲存起來。

  • 傳送網路請求

Python 的 Request 庫可以很方便地傳送網路請求,程式碼如下:


def requestData(url, params):
    session 
= requests.Session()
    headers = {
        "User-Agent""Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X)",
        "Accept""application/json",
        "Connection""keep-alive",
        "Accept-Language""en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,zh-TW;q=0.6",
        "Accept-Encoding""gzip, deflate"
    }
    response = session.get(url, params=params, headers=headers)
    if response.status_code == 200:
        return response.text
    return None


給定一個 URL 地址,和上行的引數,呼叫此方法,就可以模擬瀏覽器將資料拿回來。

  • 儲存資料到資料庫中

Python 中還有一個 JSON 庫,可以方便地解析 JSON。本文中,也是使用的它來進行的資料解析。因為資料抓取了很多天的預售票房資料,所以在儲存的時候,使用 movieId 和 date 組合為每一條資料的唯一 ID。為方便後面處理資料,減少網路請求,所以將所有的原始資料儲存起來。程式碼如下:


def saveItem(date, jsonStr): 
    dic = json.loads(jsonStr)["data"]
    boxUnit = dic["totalBoxUnitInfo"]
    dataList = dic["list"]
    for item in dataList:
        movieId = item["movieId"]
        if item["releaseInfo"] == u"上映首日" or item["releaseInfo"] == u"上映2天" or item["releaseInfo"] == u"上映3天" :
            insertPiaofangMovieInfo(
                str(movieId) + "_" + date, date, movieId, item["movieName"], 
                item["boxRate"],item["boxInfo"],boxUnit ,item["showRate"],
                item["showInfo"],item["avgSeatView"],item["avgShowView"]
            )


在貓眼實時票房中,我們可以看到《瘋狂的外星人》票房最高。但並不太能直觀的感受到和其它幾部電影的差距,視覺化展示資料能夠更加友好,這裡使用了 pyechats 來進行資料渲染。看圖說話:

640?wx_fmt=png

在圖中可以看到《瘋狂的外星人》的票房要選高於其他電影,而截止 2 月 3 日晚,《流浪地球》與《飛馳人生》的票房相當(編者注:隨後在除夕夜《飛馳人生》趕超)。前段時間刷屏的《小豬佩奇過大年》的票房資料落底,實在有點令人吃驚,看這個資料,佩奇再紅,還是幹不過熊大熊二

640?wx_fmt=png

圖片來源:movie.douban.com

為了更好地給大家作參考,筆者還抓取了春節檔電影的“想看”資料。

介面:http://m.maoyan.com/ajax/detailmovie?movieId=movieId

拿到這些資料,繪製了一個折線圖:

640?wx_fmt=png

綜上我們可以看到,無論是實實在在的預售票房,還是眾口熱議的口碑上,《瘋狂的外星人》都是實質名歸的贏家,筆者也建議有時間的朋友去看看。

另一方面,周星馳的《新喜劇之王》的想看量在 319844,位於春節檔的第三位。首日的資料票房卻只有不到 6000W,難道是朋友們都還在上班,我們欠星爺的電影票還要繼續欠著?

640?wx_fmt=jpeg

圖片來源:movie.douban.com


史上最強春節檔的評分對比


分析完上面的票房與觀眾想看的資料過後,貓眼中還有關於春節檔節目的短評資料,使用者也給了相應的評分。憑藉對導演與演員的信任度,給出了相應的評分。

先將評論資料抓取到本地儲存。

介面: http://m.maoyan.com/review/v2/comments.json

程式碼如下:


def saveComment(movieId, comment):
    conn = sqlite3.connect('spring_festival.db')
    conn.text_factory = str
    cursor = conn.cursor()
    ins = "insert into comments(id, movieId, content, gender, nick, score, original) values (?,?,?,?,?,?,?)"
    v = (comment["id"], movieId,comment["content"], comment["gender"], comment["nick"], comment["score"], json.dumps(comment))
    cursor.execute(ins, v)
    cursor.close()
    conn.commit()
    conn.close()


評分圖如下:

640?wx_fmt=png

從上圖我們可以明顯地看出,春節檔之中,觀眾朋友對《新喜劇之王》、《流浪地球》、《飛馳人生》、《廉政風雲》、《熊出沒-原始時代》明顯有超高預期,而如《神探蒲松齡》、《小豬佩奇過大年》,觀眾對其預期明顯比其他電影要低。很難想象,前不久的《啥是佩奇》掀起全民佩奇熱,尤其今年還是佩奇年的時候,這股熱潮並沒有直接反應到佩奇的年度大戲中,而今年春節檔唯一一部古裝戲,且有成龍大哥坐鎮的《神探蒲松齡》也並沒有打動觀眾。


評論詞雲


640?wx_fmt=png

最後,我們再以詞雲來綜合看一下以上所有電影的評論關鍵詞,除卻“期待”之外,可以顯著地看到“沈騰”、“黃渤”、“流浪地球”,這人心所向一定程度上是極大的認可,只不過比較讓人疑惑的是,為什麼風評不錯的《流浪地球》,甚至一度有其(流浪地球的出現“開啟了中國科幻電影‘元年’,可以稱得上是春節自救指南,帶你流浪人生”這樣非常高的讚譽之聲,但為什麼這一切沒有直接體現在票房上?此外,對於春節而言,所求無非是闔家歡樂,無論看什麼,最重要的,還是一起看的人。

謹以此文,祝所有程式設計師朋友新春大吉,闔家歡樂,幸福團圓!

(本文為 AI科技大本營轉載文章,轉載請聯絡作者。)

徵稿

640?wx_fmt=png

推薦閱讀:

點選“閱讀原文”,開啟CSDN APP 閱讀更貼心!

相關文章