한국영화

한국영화 제작비와 매출을 시각화해보자.

저자
소속

1 데이터셋

1.1 크롤링

가장 많은 영화제작비가 투입된 영화 10개를 웹 스크레핑으로 가져와서 정제작업을 한다. 와차 대한민국 영화 순제작비 순위를 참조하여 정리한 펨코 역대 한국 영화 순제작비 순위에서 데이터를 가져온다.

코드
library(tidyverse)
library(rvest)

movie_url <- "https://www.fmkorea.com/best/5832255555"

movie_html <- read_html(movie_url)

movie_list <- movie_html |> 
  html_nodes("table") |> 
  html_table() 

movie_list |> 
  enframe() |>
  mutate(text = map(value, unlist)) |> 
  mutate(text = map_chr(text, paste, collapse = "\n"))  |> 
  pull(text) |> 
  tail(100)
  write.table("clipboard", row.names = FALSE,   sep = ",")
코드
# tibble 패키지를 불러온다
library(tidyverse)

# 데이터프레임을 생성한다
top_movie_raw <- tribble(
  ~순위, ~영화명, ~개봉년도, ~순제작비, ~총제작비, ~배급사,
  "1위", "설국열차", 2013, "437억원", "530억원(해외 포함)", "CJ 엔터테인먼트",
  "2위", "외계+인 1부", 2022, "330억원", NA, "CJ 엔터테인먼트",
  "3위", "디 워", 2007, "315억원", "700억원(해외 포함)", "쇼박스",
  "4위", "더 문", 2023, "286억원", NA, "CJ 엔터테인먼트",
  "5위", "마이웨이", 2011, "280억원", "350억원", "CJ 엔터테인먼트",
  "6위", "한산: 용의 출현", 2022, "272억원", "312억원", "롯데 엔터테인먼트",
  "7위", "백두산", 2019, "260억원", "300억원", "CJ 엔터테인먼트",
  "8위", "비상선언", 2022, "260억원", "300억원", "쇼박스",
  "9위", "미스터 고", 2013, "225억원", "300억원", "쇼박스",
  "10위", "군함도", 2017, "225억원", "267억원", "CJ 엔터테인먼트"
)

top_movie_raw
#> # A tibble: 10 × 6
#>    순위  영화명          개봉년도 순제작비 총제작비           배급사           
#>    <chr> <chr>              <dbl> <chr>    <chr>              <chr>            
#>  1 1위   설국열차            2013 437억원  530억원(해외 포함) CJ 엔터테인먼트  
#>  2 2위   외계+인 1부         2022 330억원  <NA>               CJ 엔터테인먼트  
#>  3 3위   디 워               2007 315억원  700억원(해외 포함) 쇼박스           
#>  4 4위   더 문               2023 286억원  <NA>               CJ 엔터테인먼트  
#>  5 5위   마이웨이            2011 280억원  350억원            CJ 엔터테인먼트  
#>  6 6위   한산: 용의 출현     2022 272억원  312억원            롯데 엔터테인먼트
#>  7 7위   백두산              2019 260억원  300억원            CJ 엔터테인먼트  
#>  8 8위   비상선언            2022 260억원  300억원            쇼박스           
#>  9 9위   미스터 고           2013 225억원  300억원            쇼박스           
#> 10 10위  군함도              2017 225억원  267억원            CJ 엔터테인먼트

1.2 영화정보

1.2.1 스크립트

코드
library(tidyverse)
library(rvest)
library(httr)


kofic_req <- glue::glue("http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.json",
           "?key={Sys.getenv('KOFIC_API_KEY')}",
           "&movieNm={URLencode('군함도')}")

movie_resp <- httr::GET(kofic_req)

# convert list to dataframe
movie_json <- content(movie_resp, "text", encoding = "UTF-8")

movie_raw <- jsonlite::fromJSON(movie_json) |> 
  as.data.frame()

movie_columns <- str_extract(names(movie_raw), "[^.]*$")

movie_tbl <- movie_raw |> 
  set_names(movie_columns)

movie_tbl
#>   totCnt         source  movieCd       movieNm
#> 1      2 영화진흥위원회 20177063 군함도 감독판
#> 2      2 영화진흥위원회 20161481        군함도
#>                               movieNmEn prdtYear   openDt typeNm prdtStatNm
#> 1 The Battleship Island: Director's Cut     2017            장편       기타
#> 2                 The Battleship Island     2017 20170726   장편       개봉
#>   nationAlt    genreAlt repNationNm repGenreNm directors
#> 1      한국 액션,드라마        한국       액션    류승완
#> 2      한국 액션,드라마        한국       액션    류승완
#>                                         companys
#> 1                         20100374, (주)외유내강
#> 2 20100374, 20186561, (주)외유내강, (주)필름케이

1.2.2 함수

코드

get_movie_info <- function(movie_name = "군함도") {
  
  cat("영화정보를 가져옵니다.", movie_name, "\n")
  
  kofic_req <- glue::glue("http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.json",
           "?key={Sys.getenv('KOFIC_API_KEY')}",
           "&movieNm={URLencode(movie_name)}")

  movie_resp <- httr::GET(kofic_req)
  
  # convert list to dataframe
  movie_json <- content(movie_resp, "text", encoding = "UTF-8")
  
  movie_raw <- jsonlite::fromJSON(movie_json) |> 
    as.data.frame()
  
  movie_columns <- str_extract(names(movie_raw), "[^.]*$")
  
  movie_tbl <- movie_raw |> 
    set_names(movie_columns)
  
  return(movie_tbl)
}

get_movie_info("디 워")
#> 영화정보를 가져옵니다. 디 워
#>    totCnt         source  movieCd
#> 1      13 영화진흥위원회 20227226
#> 2      13 영화진흥위원회 20227292
#> 3      13 영화진흥위원회 20224237
#> 4      13 영화진흥위원회 20070316
#> 5      13 영화진흥위원회 19998877
#> 6      13 영화진흥위원회 20080782
#> 7      13 영화진흥위원회 20136396
#> 8      13 영화진흥위원회 20136395
#> 9      13 영화진흥위원회 19968423
#> 10     13 영화진흥위원회 20070403
#>                                                 movieNm
#> 1                     9월 프레임 워크: 마리 멘켄 단편선
#> 2                                             앤디 워홀
#> 3                                   부카니마: 앤디 워홀
#> 4                                                  디워
#> 5                                      도망자: 바디워크
#> 6                                             앤디 워홀
#> 7                                           디워-드래곤
#> 8                                    디워 : 익룡의 공습
#> 9                                나는 앤디워홀을 쏘았다
#> 10 시네마정동-판타스틱4:실버서퍼의 위협,라따뚜이, 디워 
#>                          movieNmEn prdtYear   openDt   typeNm prdtStatNm
#> 1                                      2022          옴니버스       기타
#> 2                      Andy Warhol     1965              단편       기타
#> 3           Bookanima: Andy Warhol     2020              단편       기타
#> 4                            D-War     2007 20070801     장편       개봉
#> 5                         Bodywork     1999              장편       기타
#> 6  Andy Warhol: A Documentary Film     2006              장편       기타
#> 7                  Dragon Dynasty      2006              장편       기타
#> 8                         Warbirds     2008              장편       기타
#> 9               I Shot Andy Warhol     1996                         기타
#> 10               Package Screening          20070808     장편           
#>    nationAlt        genreAlt repNationNm repGenreNm          directors
#> 1       미국            기타        미국       기타               NULL
#> 2       미국            기타        미국       기타               NULL
#> 3  한국,미국      애니메이션        한국 애니메이션               NULL
#> 4       한국     액션,판타지        한국       액션             심형래
#> 5       영국            범죄        영국       범죄 가레스 라이스 존스
#> 6       미국      다큐멘터리        미국 다큐멘터리            릭 번스
#> 7       미국 어드벤처,판타지        미국   어드벤처          매트 코드
#> 8       미국  SF,스릴러,전쟁        미국         SF        케빈 겐드류
#> 9                                                                 NULL
#> 10      기타            기타        기타       기타               NULL
#>                companys
#> 1                  NULL
#> 2                  NULL
#> 3                  NULL
#> 4  20100170, ㈜영구아트
#> 5                  NULL
#> 6                  NULL
#> 7                  NULL
#> 8                  NULL
#> 9                  NULL
#> 10                 NULL

1.2.3 전체 영화정보

코드
top_movie_raw <- top_movie_raw |> 
  mutate(data = map(영화명, get_movie_info)) 
#> 영화정보를 가져옵니다. 설국열차 
#> 영화정보를 가져옵니다. 외계+인 1부 
#> 영화정보를 가져옵니다. 디 워 
#> 영화정보를 가져옵니다. 더 문 
#> 영화정보를 가져옵니다. 마이웨이 
#> 영화정보를 가져옵니다. 한산: 용의 출현 
#> 영화정보를 가져옵니다. 백두산 
#> 영화정보를 가져옵니다. 비상선언 
#> 영화정보를 가져옵니다. 미스터 고 
#> 영화정보를 가져옵니다. 군함도

top_movie_tbl <- top_movie_raw |> 
  unnest(data)  |> 
  mutate(movieNm = if_else(movieNm == "디워", "디 워", movieNm)) |>
  filter(영화명 == movieNm) 

top_movie_tbl |> 
  select(movieCd, 순위, 영화명, 개봉년도, 순제작비, 배급사, prdtYear, openDt)
#> # A tibble: 11 × 8
#>    movieCd  순위  영화명          개봉년도 순제작비 배급사       prdtYear openDt
#>    <chr>    <chr> <chr>              <dbl> <chr>    <chr>        <chr>    <chr> 
#>  1 20126674 1위   설국열차            2013 437억원  CJ 엔터테인… 2013     20130…
#>  2 20208446 2위   외계+인 1부         2022 330억원  CJ 엔터테인… 2022     20220…
#>  3 20070316 3위   디 워               2007 315억원  쇼박스       2007     20070…
#>  4 20218935 4위   더 문               2023 286억원  CJ 엔터테인… 2023     20230…
#>  5 20090810 4위   더 문               2023 286억원  CJ 엔터테인… 2009     20091…
#>  6 19790083 5위   마이웨이            2011 280억원  CJ 엔터테인… 1975     19750…
#>  7 20209343 6위   한산: 용의 출현     2022 272억원  롯데 엔터테… 2021     20220…
#>  8 20192206 7위   백두산              2019 260억원  CJ 엔터테인… 2019     20191…
#>  9 20196410 8위   비상선언            2022 260억원  쇼박스       2022     20220…
#> 10 20124082 9위   미스터 고           2013 225억원  쇼박스       2013     20130…
#> 11 20161481 10위  군함도              2017 225억원  CJ 엔터테인… 2017     20170…