国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

實(shí)戰(zhàn)!《長(zhǎng)津湖》為什么這么火爆?我用 Python 來分析貓眼影評(píng)

lijy91 / 3319人閱讀

摘要:作者周蘿卜鏈接長(zhǎng)津湖貓眼影評(píng)歡迎關(guān)注,專注數(shù)據(jù)分析數(shù)據(jù)挖掘好玩工具對(duì)于這個(gè)十一黃金周的電影市場(chǎng),絕對(duì)是長(zhǎng)津湖的天下,短短幾天,票房就已經(jīng)突破億,大有奮起直追戰(zhàn)狼的盡頭。

作者:周蘿卜 鏈接:長(zhǎng)津湖貓眼影評(píng)
歡迎關(guān)注 ,專注Python、數(shù)據(jù)分析、數(shù)據(jù)挖掘、好玩工具!

對(duì)于這個(gè)十一黃金周的電影市場(chǎng),絕對(duì)是《長(zhǎng)津湖》的天下,短短幾天,票房就已經(jīng)突破36億,大有奮起直追《戰(zhàn)狼2》的盡頭。而且口碑也是相當(dāng)?shù)母撸堁墼u(píng)分高達(dá)9.5,絕對(duì)的票房口碑雙豐收啊

下面我們就通過爬取貓眼的電影評(píng)論,進(jìn)行相關(guān)的可視化分析,看看為什么這部電影是如此的受歡迎,最后還進(jìn)行了簡(jiǎn)單的票房預(yù)測(cè),你一定不能錯(cuò)過哦,歡迎收藏學(xué)習(xí),點(diǎn)贊支持,喜歡技術(shù)交流的可以文末技術(shù)交流群。

數(shù)據(jù)獲取

貓眼評(píng)論爬取,還是那么老一套,直接構(gòu)造 API 接口信息即可

url = "https://m.maoyan.com/mmdb/comments/movie/257706.json?v=yes&offset=30"payload={}headers = {  "Cookie": "_lxsdk_cuid=17c188b300d13-0ecb2e1c54bec6-a7d173c-100200-17c188b300ec8; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1633622378; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; __mta=87266087.1633622378325.1633622378325.1633622378325.1; uuid_n_v=v1; iuuid=ECBA18D0278711EC8B0DFD12EB2962D2C4A641A554EF466B9362A58679FDD6CF; webp=true; ci=55%2C%E5%8D%97%E4%BA%AC; ci=55%2C%E5%8D%97%E4%BA%AC; ci=55%2C%E5%8D%97%E4%BA%AC; featrues=[object Object]; _lxsdk=92E6A4E0278711ECAE4571A477FD49B513FE367C52044EB5A6974451969DD28A; Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1633622806",  "Host": "m.maoyan.com",  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36"}response = requests.request("GET", url, headers=headers, data=payload)print(response.json())

這么幾行代碼,我們就可以得到如下結(jié)果

獲取到數(shù)據(jù)后,我們就可以解析返回的 json 數(shù)據(jù),并保存到本地了
先寫一個(gè)保存數(shù)據(jù)的函數(shù)

def save_data_pd(data_name, list_info):    if not os.path.exists(data_name + r"_data.csv"):        # 表頭        name = ["comment_id","approve","reply","comment_time","sureViewed","nickName",                "gender","cityName","userLevel","user_id","score","content"]        # 建立DataFrame對(duì)象        file_test = pd.DataFrame(columns=name, data=list_info)        # 數(shù)據(jù)寫入        file_test.to_csv(data_name + r"_data.csv", encoding="utf-8", index=False)    else:        with open(data_name + r"_data.csv", "a+", newline="", encoding="utf-8") as file_test:            # 追加到文件后面            writer = csv.writer(file_test)            # 寫入文件            writer.writerows(list_info)

直接通過 Pandas 來保存數(shù)據(jù),可以省去很多數(shù)據(jù)處理的事情

接下來編寫解析 json 數(shù)據(jù)的函數(shù)

def get_data(json_comment):    list_info = []    for data in json_comment:        approve = data["approve"]        comment_id = data["id"]        cityName = data["cityName"]        content = data["content"]        reply = data["reply"]        # 性別:1男,2女,0未知        if "gender" in data:            gender = data["gender"]        else:            gender = 0        nickName = data["nickName"]        userLevel = data["userLevel"]        score = data["score"]        comment_time = data["startTime"]        sureViewed = data["sureViewed"]        user_id = data["userId"]        list_one = [comment_id, approve, reply,  comment_time, sureViewed, nickName, gender, cityName, userLevel,                     user_id, score, content]        list_info.append(list_one)    save_data_pd("maoyan", list_info)

我們把幾個(gè)主要的信息提取出來,比如用戶的 nickname,評(píng)論時(shí)間,所在城市等等

最后把上面的代碼整合,并構(gòu)造爬取的 url 即可

def fire():    tmp = "https://m.maoyan.com/mmdb/comments/movie/257706.json?v=yes&offset="    payload={}    headers = {      "Cookie": "_lxsdk_cuid=17c188b300d13-0ecb2e1c54bec6-a7d173c-100200-17c188b300ec8; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1633622378; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; __mta=87266087.1633622378325.1633622378325.1633622378325.1; uuid_n_v=v1; iuuid=ECBA18D0278711EC8B0DFD12EB2962D2C4A641A554EF466B9362A58679FDD6CF; webp=true; ci=55%2C%E5%8D%97%E4%BA%AC; ci=55%2C%E5%8D%97%E4%BA%AC; ci=55%2C%E5%8D%97%E4%BA%AC; featrues=[object Object]; _lxsdk=92E6A4E0278711ECAE4571A477FD49B513FE367C52044EB5A6974451969DD28A; Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1633622806",      "Host": "m.maoyan.com",      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36"    }    for i in range(0, 3000, 15):        url = tmp + str(i)        print(url)        response = requests.request("GET", url, headers=headers, data=payload)        comment = response.json()        if not comment.get("hcmts"):            break        hcmts = comment["hcmts"]        get_data(hcmts)        cmts = comment["cmts"]        get_data(cmts)        time.sleep(10)

爬取過程如下

保存到本地的數(shù)據(jù)如下

下面我們就可以進(jìn)行相關(guān)的可視化分析了

可視化分析

1 數(shù)據(jù)清洗

我們首先根據(jù) comment_id 來去除重復(fù)數(shù)據(jù)

df_new = df.drop_duplicates(["comment_id"])

對(duì)于評(píng)論內(nèi)容,我們進(jìn)行去除非中文的操作

def filter_str(desstr,restr=""):    #過濾除中文以外的其他字符    res = re.compile("[^/u4e00-/u9fa5^,^,^.^。^【^】^(^)^(^)^“^”^-^!^!^?^?^]")    # print(desstr)    res.sub(restr, desstr)

2 評(píng)論點(diǎn)贊及回復(fù)榜

我們先來看看哪些評(píng)論是被點(diǎn)贊最多的

approve_sort = df_new.sort_values(by=["approve"], ascending=False)approve_sort = df_new.sort_values(by=["approve"], ascending=False)x_data = approve_sort["nickName"].values.tolist()[:10]y_data = approve_sort["approve"].values.tolist()[:10]b = (Bar()     .add_xaxis(x_data)     .add_yaxis("",y_data)     .set_global_opts(title_opts = opts.TitleOpts(title="評(píng)論點(diǎn)贊前十名"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right"))     .reversal_axis())grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()


可以看到位于榜首的是一個(gè)叫“琦寶”的觀眾寫的評(píng)論,點(diǎn)贊量高達(dá)86027

再來看看評(píng)論回復(fù)的情況

reply_sort = df_new.sort_values(by=["reply"], ascending=False)x_data = reply_sort["nickName"].values.tolist()[:10]y_data = reply_sort["reply"].values.tolist()[:10]b = (Bar()     .add_xaxis(x_data)     .add_yaxis("",y_data)     .set_global_opts(title_opts = opts.TitleOpts(title="評(píng)論回復(fù)前十名"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right"))     .reversal_axis())grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()

回復(fù)量最高的同樣是“琦寶”的評(píng)論,很好奇,他到底寫了什么呢,快來看看

df_new[df_new["nickName"].str.contains("琦寶")]["content"].values.tolist()[0]

Output:

"印象中第一次一大家子一起來看電影,姥爺就是志愿軍,他一輩子沒進(jìn)過電影院,開始還擔(dān)心會(huì)不會(huì)不適應(yīng),感謝影院工作人員的照顧,姥爺全程非常投入,我坐在旁邊看到他偷偷抹了好幾次眼淚,剛才我問電影咋樣,一直念叨“好,好哇,我們那時(shí)候就是那樣的,就是那樣的……”/n忽然覺得歷史長(zhǎng)河與我竟如此之近,剛剛的三個(gè)小時(shí)我看到的是遙遠(yuǎn)的70年前、是教科書里的戰(zhàn)爭(zhēng),更是姥爺?shù)?span id="ssyq0uy"    class="token number">19歲,是真真切切的、他的青春年代!"

還真的是非常走心的評(píng)論,而且自己的家人就有經(jīng)歷過長(zhǎng)津湖戰(zhàn)役的經(jīng)歷,那么在影院觀影的時(shí)候,肯定會(huì)有不一樣的感受!

當(dāng)然我們還可以爬取每條評(píng)論的reply信息,通過如下接口

https://i.maoyan.com/apollo/apolloapi/mmdb/replies/comment/1144027754.json?v=yes&offset=0

只需要替換 json 文件名稱為對(duì)應(yīng)的 comment_id 即可,這里就不再詳細(xì)介紹了,感興趣的朋友自行探索呀

下面我們來看一下整體評(píng)論數(shù)據(jù)的情況

3 各城市排行

來看看哪些城市的評(píng)論最多呢

result = df_new["cityName"].value_counts()[:10].sort_values()x_data = result.index.tolist()y_data = result.values.tolist()b = (Bar()     .add_xaxis(x_data)     .add_yaxis("",y_data)     .set_global_opts(title_opts = opts.TitleOpts(title="評(píng)論城市前十"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right"))     .reversal_axis())grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()

一線大城市紛紛上榜,看來這些城市的愛國(guó)主義教育做的還是要好很多呀

再來看看城市的全國(guó)地圖分布

result = df_new["cityName"].value_counts().sort_values()x_data = result.index.tolist()y_data = result.values.tolist()city_list = [list(z) for z in zip(x_data, y_data)]

可以看到,這個(gè)評(píng)論城市的分布,也是與我國(guó)總體經(jīng)濟(jì)的發(fā)展情況相吻合的

4 性別分布

再來看看此類電影,對(duì)什么性別的觀眾更具有吸引力

attr = ["其他","男","女"]b = (Pie()     .add("", [list(z) for z in zip(attr, df_new.groupby("gender").gender.count().values.tolist())])     .set_global_opts(title_opts = opts.TitleOpts(title="性別分布"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right")))grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()

在填寫了性別的數(shù)據(jù)當(dāng)中,女性竟然多一些,這還是比較出乎意料的

5 是否觀看

貓眼是可以在沒有觀看電影的情況下進(jìn)行評(píng)論的,我們來看看這個(gè)數(shù)據(jù)的情況

result = df_new["sureViewed"].value_counts()[:10].sort_values().tolist()b = (Pie()     .add("", [list(z) for z in zip(["未看過", "看過"], result)])     .set_global_opts(title_opts = opts.TitleOpts(title="是否觀看過"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right")))grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()

大部分人都是在觀看了之后才評(píng)論的,這要在一定程度上保證了評(píng)論和打分的可靠性

6 評(píng)分分布

貓眼頁面上是10分制,但是在接口當(dāng)中是5分制

result = df_new["score"].value_counts().sort_values()x_data = result.index.tolist()y_data = result.values.tolist()b = (Bar()     .add_xaxis(x_data)     .add_yaxis("",y_data)     .set_global_opts(title_opts = opts.TitleOpts(title="評(píng)分分布"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right"))     .reversal_axis())grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()

可以看到5-4.5評(píng)論占據(jù)了大部分,口碑是真的好啊

7 評(píng)論時(shí)間分布

對(duì)于評(píng)論時(shí)間,我這里直接使用了原生的 echarts 來作圖

from collections import Counter result = df_new["comment_time"].values.tolist()result = [i.split()[1].split(":")[0] + "點(diǎn)" for i in result]result_dict = dict(Counter(result))result_list = []for k,v in result_dict.items():    tmp = {}    tmp["name"] = k    tmp["value"] = v    result_list.append(tmp)children_dict = {"children": result_list}

示例地址:https://echarts.apache.org/examples/zh/editor.html?c=treemap-sunburst-transition

能夠看出,在晚上的19點(diǎn)和20點(diǎn),都是大家寫評(píng)論的高峰期,一天的繁忙結(jié)束后,寫個(gè)影評(píng)放松下

8 每天評(píng)論分布

接下來是每天的評(píng)論分布情況

result = df_new["comment_time"].values.tolist()result = [i.split()[0] for i in result]result_dict = dict(Counter(result))b = (Pie()     .add("", [list(z) for z in zip(result_dict.keys(), result_dict.values())])     .set_global_opts(title_opts = opts.TitleOpts(title="每天評(píng)論數(shù)量"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right")))grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()

就目前來看,幾乎所有的評(píng)論都集中在10月8號(hào),難道是上班第一天,不想上班,只想摸魚??

9 用戶等級(jí)分布

來看下貓眼評(píng)論用戶的等級(jí)情況,雖然不知道這個(gè)等級(jí)有啥用?

result = df_new["userLevel"].value_counts()[:10].sort_values()x_data = result.index.tolist()y_data = result.values.tolist()b = (Bar()     .add_xaxis(x_data)     .add_yaxis("",y_data)     .set_global_opts(title_opts = opts.TitleOpts(title="用戶等級(jí)"))     .set_series_opts(label_opts=opts.LabelOpts(is_show=True,position="right"))     .reversal_axis())grid = Grid(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))grid.add(b, grid_opts=opts.GridOpts(pos_left="20%"))grid.render_notebook()

大家基本都是 level2,哈哈哈哈,普羅大眾嘛

10 主創(chuàng)提及次數(shù)

我們?cè)賮砜纯丛谠u(píng)論中,各位主創(chuàng)被提及的次數(shù)情況

name = ["吳京","易烊千璽","段奕宏","朱亞文","李晨","胡軍","王寧","劉勁","盧奇","曹陽","李軍","孫毅","易","易烊","千璽"]def actor(data, name):    counts = {}    comment = jieba.cut(str(data), cut_all=False)    # 去停用詞    for word in comment:        if word in name:            if word 
                 
               
              

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/122432.html

相關(guān)文章

  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評(píng)論0 收藏0
  • Vue 電影信息影評(píng)(豆瓣,貓眼

    摘要:界面如下圖電影詳情展示此功能是提供電影詳情的界面,包括演員上映時(shí)間導(dǎo)員劇情簡(jiǎn)介宣傳視頻宣傳視頻由于豆瓣官方的限制無法獲取,所以只有正在熱映板塊從貓眼獲取的電影信息才有。 Vue電影信息影評(píng)網(wǎng)站 此網(wǎng)站是我的畢業(yè)設(shè)計(jì),題目是基于HTML5的電影信息匯總弄網(wǎng)站,由于最近在看Vue.js,所以就想用Vue.js來構(gòu)建一個(gè)前端網(wǎng)站,這里code就不大篇幅的寫了,主要講一下網(wǎng)站的功能和所用到的技...

    hzc 評(píng)論0 收藏0
  • Vue 電影信息影評(píng)(豆瓣,貓眼

    摘要:界面如下圖電影詳情展示此功能是提供電影詳情的界面,包括演員上映時(shí)間導(dǎo)員劇情簡(jiǎn)介宣傳視頻宣傳視頻由于豆瓣官方的限制無法獲取,所以只有正在熱映板塊從貓眼獲取的電影信息才有。 Vue電影信息影評(píng)網(wǎng)站 此網(wǎng)站是我的畢業(yè)設(shè)計(jì),題目是基于HTML5的電影信息匯總弄網(wǎng)站,由于最近在看Vue.js,所以就想用Vue.js來構(gòu)建一個(gè)前端網(wǎng)站,這里code就不大篇幅的寫了,主要講一下網(wǎng)站的功能和所用到的技...

    Nekron 評(píng)論0 收藏0
  • python爬蟲實(shí)戰(zhàn)一:分析豆瓣中最新電影的影評(píng)

    摘要:準(zhǔn)備把豆瓣上對(duì)它的影評(píng)短評(píng)做一個(gè)分析。這樣就得到了最新電影的信息了。例如戰(zhàn)狼的短評(píng)網(wǎng)址為其中就是電影的,表示評(píng)論的第條評(píng)論。如下圖所示好的,至此我們已經(jīng)爬取了豆瓣最近播放電影的評(píng)論數(shù)據(jù),接下來就要對(duì)數(shù)據(jù)進(jìn)行清洗和詞云顯示了。 簡(jiǎn)介 剛接觸python不久,做一個(gè)小項(xiàng)目來練練手。前幾天看了《戰(zhàn)狼2》,發(fā)現(xiàn)它在最新上映的電影里面是排行第一的,如下圖所示。準(zhǔn)備把豆瓣上對(duì)它的影評(píng)(短評(píng))做...

    BearyChat 評(píng)論0 收藏0
  • 國(guó)慶看了長(zhǎng)津 | 堅(jiān)韌的毅力讓我拿到了薪資18.5K,人生就像馬拉松,堅(jiān)持到最后,就是勝利者

    摘要:戰(zhàn)爭(zhēng)已勝,精神依在,當(dāng)延續(xù)了這份堅(jiān)韌與毅力之后,所有事情都將變得有無限可能,本期成功就業(yè)的小余,正是憑借著這股毅力,完成了夢(mèng)想,取得了高薪。 伴隨著7天國(guó)慶長(zhǎng)假落...

    smallStone 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<