====== searchPeopleList.xml ====== library(XML) library(httr) library(tidyr) # https://kobis.or.kr/kobisopenapi/homepg/main/main.do searchPeople <- "https://kobis.or.kr/kobisopenapi/webservice/rest/people/searchPeopleList.xml" KEY <- 'your_keys_here' name <- "Christian Bale" name <- iconv(name, to="utf8") url <-URLencode(iconv(searchPeople, to="utf8")) url spRes <- GET(url, query= list("key" = KEY, "peopleNm"= name)) spRes spParsed <- xmlParse(spRes) spParsed xmlPeople <- getNodeSet(spParsed, "//people") xmlPeople xmlFilm <- getNodeSet(spParsed, "//people/filmoNames") xmlFilm filmCh <- xmlToDataFrame(xmlFilm, stringsAsFactors = F) filmCh View(filmCh) library(tidyr) library(tidyverse) fs <- mutate(filmCh, text = strsplit(as.character(text), "\\|")) fs <- unnest(fs, text) str(fs) data.frame(fs) fs[1,] > library(XML) > library(httr) > library(tidyr) > > # https://kobis.or.kr/kobisopenapi/homepg/main/main.do > > searchPeople <- "https://kobis.or.kr/kobisopenapi/webservice/rest/people/searchPeopleList.xml" > KEY <- 'your_key_here' > name <- "Christian Bale" > name <- iconv(name, to="utf8") > url <-URLencode(iconv(searchPeople, to="utf8")) > url [1] "https://kobis.or.kr/kobisopenapi/webservice/rest/people/searchPeopleList.xml" > > spRes <- GET(url, query= list("key" = KEY, "peopleNm"= name)) > spRes Response [https://kobis.or.kr/kobisopenapi/webservice/rest/people/searchPeopleList.xml?key=your_key_here&peopleNm=Christian%20Bale] Date: 2026-06-01 03:26 Status: 200 Content-Type: application/xml;charset=utf-8 Size: 935 B > spParsed <- xmlParse(spRes) > spParsed 1 10077325 크리스찬 베일 Christian Bale 배우 브라이드!|토르: 러브 앤 썬더|암스테르담|포드 V 페라리|바이스|몬태나|더 프로미스|빅쇼트|나이트 오브 컵스|엑소더스: 신들과 왕들|아웃 오브 더 퍼니스|아메리칸 허슬|다크 나이트 라이즈|진링의 13소녀|파이터|퍼블릭 에너미|터미네이터 : 미래전쟁의 시작|다크 나이트|아임 낫 데어|3:10 투 유마|프레스티지|레스큐 던|하쉬 타임|뉴월드|배트맨 비긴즈|머시니스트|이퀼리브리엄|레인 오브 파이어|로렐 캐년|아메리칸 싸이코|벨벳 골드마인 영화진흥위원회 > xmlPeople <- getNodeSet(spParsed, "//people") > xmlPeople [[1]] 10077325 크리스찬 베일 Christian Bale 배우 브라이드!|토르: 러브 앤 썬더|암스테르담|포드 V 페라리|바이스|몬태나|더 프로미스|빅쇼트|나이트 오브 컵스|엑소더스: 신들과 왕들|아웃 오브 더 퍼니스|아메리칸 허슬|다크 나이트 라이즈|진링의 13소녀|파이터|퍼블릭 에너미|터미네이터 : 미래전쟁의 시작|다크 나이트|아임 낫 데어|3:10 투 유마|프레스티지|레스큐 던|하쉬 타임|뉴월드|배트맨 비긴즈|머시니스트|이퀼리브리엄|레인 오브 파이어|로렐 캐년|아메리칸 싸이코|벨벳 골드마인 attr(,"class") [1] "XMLNodeSet" > xmlFilm <- getNodeSet(spParsed, "//people/filmoNames") > xmlFilm [[1]] 브라이드!|토르: 러브 앤 썬더|암스테르담|포드 V 페라리|바이스|몬태나|더 프로미스|빅쇼트|나이트 오브 컵스|엑소더스: 신들과 왕들|아웃 오브 더 퍼니스|아메리칸 허슬|다크 나이트 라이즈|진링의 13소녀|파이터|퍼블릭 에너미|터미네이터 : 미래전쟁의 시작|다크 나이트|아임 낫 데어|3:10 투 유마|프레스티지|레스큐 던|하쉬 타임|뉴월드|배트맨 비긴즈|머시니스트|이퀼리브리엄|레인 오브 파이어|로렐 캐년|아메리칸 싸이코|벨벳 골드마인 attr(,"class") [1] "XMLNodeSet" > filmCh <- xmlToDataFrame(xmlFilm, stringsAsFactors = F) > filmCh text 1 브라이드!|토르: 러브 앤 썬더|암스테르담|포드 V 페라리|바이스|몬태나|더 프로미스|빅쇼트|나이트 오브 컵스|엑소더스: 신들과 왕들|아웃 오브 더 퍼니스|아메리칸 허슬|다크 나이트 라이즈|진링의 13소녀|파이터|퍼블릭 에너미|터미네이터 : 미래전쟁의 시작|다크 나이트|아임 낫 데어|3:10 투 유마|프레스티지|레스큐 던|하쉬 타임|뉴월드|배트맨 비긴즈|머시니스트|이퀼리브리엄|레인 오브 파이어|로렐 캐년|아메리칸 싸이코|벨벳 골드마인 > View(filmCh) > > library(tidyr) > library(tidyverse) > > fs <- mutate(filmCh, text = strsplit(as.character(text), "\\|")) > fs <- unnest(fs, text) > str(fs) tibble [31 × 1] (S3: tbl_df/tbl/data.frame) $ text: chr [1:31] "브라이드!" "토르: 러브 앤 썬더" "암스테르담" "포드 V 페라리" ... > data.frame(fs) text 1 브라이드! 2 토르: 러브 앤 썬더 3 암스테르담 4 포드 V 페라리 5 바이스 6 몬태나 7 더 프로미스 8 빅쇼트 9 나이트 오브 컵스 10 엑소더스: 신들과 왕들 11 아웃 오브 더 퍼니스 12 아메리칸 허슬 13 다크 나이트 라이즈 14 진링의 13소녀 15 파이터 16 퍼블릭 에너미 17 터미네이터 : 미래전쟁의 시작 18 다크 나이트 19 아임 낫 데어 20 3:10 투 유마 21 프레스티지 22 레스큐 던 23 하쉬 타임 24 뉴월드 25 배트맨 비긴즈 26 머시니스트 27 이퀼리브리엄 28 레인 오브 파이어 29 로렐 캐년 30 아메리칸 싸이코 31 벨벳 골드마인 > fs[1,] # A tibble: 1 × 1 text 1 브라이드! > ====== SearchMovieList.xml ====== ################################## # searchMovieList.xml sFilms <- "https://kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.xml" KEY <- 'your_key_here' dir <- "크리스토퍼 놀란" dir <- iconv(dir, to="utf8") url <-URLencode(iconv(sFilms, to="utf8")) url sfRes <- GET(url, query= list("key" = KEY, "directorNm"= dir)) sfRes sfParsed <- xmlParse(sfRes) sfParsed xmlId <- getNodeSet(sfParsed, "//movie/movieCd") xmlId xmlF <- getNodeSet(sfParsed, "//movie/movieNm") xmlF filmId <- xmlToDataFrame(xmlId, stringsAsFactors = F) filmId colnames(filmId) <- "filmId" filmId filmN <- xmlToDataFrame(xmlF, stringsAsFactors = F) colnames(filmN) <- "film" filmN str(filmN) fg <- cbind(filmId, filmN) fg fg <- unnest(fg, film) fg > ################################## > # searchMovieList.xml > > sFilms <- "https://kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.xml" > KEY <- 'your_key_here' > dir <- "크리스토퍼 놀란" > dir <- iconv(dir, to="utf8") > url <-URLencode(iconv(sFilms, to="utf8")) > url [1] "https://kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.xml" > > sfRes <- GET(url, query= list("key" = KEY, "directorNm"= dir)) > sfRes Response [https://kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieList.xml?key=your_key_here&directorNm=%ED%81%AC%EB%A6%AC%EC%8A%A4%ED%86%A0%ED%8D%BC%20%EB%86%80%EB%9E%80] Date: 2026-06-01 03:30 Status: 200 Content-Type: application/xml;charset=utf-8 Size: 4.97 kB > sfParsed <- xmlParse(sfRes) > sfParsed 13 20250654 오디세이 The Odyssey 2026 장편 개봉예정 미국 액션 미국 액션 크리스토퍼 놀란 20081056 다크 나이트 The Dark Knight 2008 20080806 장편 개봉 미국 범죄,드라마,액션,미스터리 미국 범죄 크리스토퍼 놀란 20226431 오펜하이머 Oppenheimer 2023 20230815 장편 개봉 미국 스릴러,드라마 미국 스릴러 크리스토퍼 놀란 20100312 인셉션 Inception 2010 20100721 장편 개봉 미국 드라마,미스터리 미국 드라마 크리스토퍼 놀란 20103668 워너 브러더스 픽쳐스 20104234 레젼데리 픽쳐스 20164621 덩케르크 Dunkirk 2017 20170720 장편 개봉 미국,영국 액션,드라마,스릴러,전쟁 미국 액션 크리스토퍼 놀란 20201122 테넷 Tenet 2020 20200826 장편 개봉 미국 액션,SF 미국 액션 크리스토퍼 놀란 20010238 메멘토 Memento 2000 20010824 장편 개봉 미국 미스터리,범죄,스릴러 미국 미스터리 크리스토퍼 놀란 20112703 다크 나이트 라이즈 The Dark Knight Rises 2012 20120719 장편 개봉 미국,영국 액션,범죄,스릴러 미국 액션 크리스토퍼 놀란 20050112 배트맨 비긴즈 Batman Begins 2005 20050624 장편 개봉 미국 범죄,액션,판타지 미국 범죄 크리스토퍼 놀란 20103668 워너 브러더스 픽쳐스 20149120 인터스텔라 Interstellar 2014 20141106 장편 개봉 미국,영국 SF 미국 SF 크리스토퍼 놀란 영화진흥위원회 > xmlId <- getNodeSet(sfParsed, "//movie/movieCd") > xmlId [[1]] 20250654 [[2]] 20081056 [[3]] 20226431 [[4]] 20100312 [[5]] 20164621 [[6]] 20201122 [[7]] 20010238 [[8]] 20112703 [[9]] 20050112 [[10]] 20149120 attr(,"class") [1] "XMLNodeSet" > xmlF <- getNodeSet(sfParsed, "//movie/movieNm") > xmlF [[1]] 오디세이 [[2]] 다크 나이트 [[3]] 오펜하이머 [[4]] 인셉션 [[5]] 덩케르크 [[6]] 테넷 [[7]] 메멘토 [[8]] 다크 나이트 라이즈 [[9]] 배트맨 비긴즈 [[10]] 인터스텔라 attr(,"class") [1] "XMLNodeSet" > filmId <- xmlToDataFrame(xmlId, stringsAsFactors = F) > filmId text 1 20250654 2 20081056 3 20226431 4 20100312 5 20164621 6 20201122 7 20010238 8 20112703 9 20050112 10 20149120 > colnames(filmId) <- "filmId" > filmId filmId 1 20250654 2 20081056 3 20226431 4 20100312 5 20164621 6 20201122 7 20010238 8 20112703 9 20050112 10 20149120 > filmN <- xmlToDataFrame(xmlF, stringsAsFactors = F) > colnames(filmN) <- "film" > filmN film 1 오디세이 2 다크 나이트 3 오펜하이머 4 인셉션 5 덩케르크 6 테넷 7 메멘토 8 다크 나이트 라이즈 9 배트맨 비긴즈 10 인터스텔라 > str(filmN) 'data.frame': 10 obs. of 1 variable: $ film: chr "오디세이" "다크 나이트" "오펜하이머" "인셉션" ... > fg <- cbind(filmId, filmN) > fg filmId film 1 20250654 오디세이 2 20081056 다크 나이트 3 20226431 오펜하이머 4 20100312 인셉션 5 20164621 덩케르크 6 20201122 테넷 7 20010238 메멘토 8 20112703 다크 나이트 라이즈 9 20050112 배트맨 비긴즈 10 20149120 인터스텔라 > fg <- unnest(fg, film) > fg # A tibble: 10 × 2 filmId film 1 20250654 오디세이 2 20081056 다크 나이트 3 20226431 오펜하이머 4 20100312 인셉션 5 20164621 덩케르크 6 20201122 테넷 7 20010238 메멘토 8 20112703 다크 나이트 라이즈 9 20050112 배트맨 비긴즈 10 20149120 인터스텔라 > ====== searchMovieInfo.xml ====== ############### # searchMovieInfo.xml sFd <- "http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.xml" KEY <- 'your_key_here' filmId[7,] fg$filmId[7] fg$film[7] id <- fg$filmId[7] id url <-URLencode(iconv(sFd, to="utf8")) url sfdr <- GET(url, query= list("key" = KEY, "movieCd"= id)) sfdr sfdrP <- xmlParse(sfdr) sfdrP xmlA <- getNodeSet(sfdrP, "//actors/actor/peopleNm") xmlA actor <- xmlToDataFrame(xmlA, stringsAsFactors = F) actor colnames(actor) <- "actor" actor dir mv <- fg$film[1] mv dtoa <- data.frame(dir,actor, id, mv) dtoa library(readr) write_excel_csv(dtoa, "fstudy.csv") > ############### > # searchMovieInfo.xml > > sFd <- "http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.xml" > KEY <- 'your_key_here' > filmId[7,] [1] "20010238" > fg$filmId[7] [1] "20010238" > fg$film[7] [1] "메멘토" > id <- fg$filmId[7] > id [1] "20010238" > url <-URLencode(iconv(sFd, to="utf8")) > url [1] "http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.xml" > > sfdr <- GET(url, query= list("key" = KEY, "movieCd"= id)) > sfdr Response [http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.xml?key=your_key_here&movieCd=20010238] Date: 2026-06-01 03:35 Status: 200 Content-Type: application/xml;charset=utf-8 Size: 2.5 kB > sfdrP <- xmlParse(sfdr) > sfdrP 20010238 메멘토 Memento 113 2000 20010824 개봉 장편 미국 미스터리 범죄 스릴러 크리스토퍼 놀란 Christopher Nolan 가이 피어스 Guy Pearce 캐리 앤 모스 Carrie-Anne Moss 조 판톨리아노 Joe Pantoliano 필름 필름 2D 디지털 20158370 (주)디스테이션 배급사 20122837 (주)팝엔터테인먼트 Pop Entertainment 배급사 20139757 (주)엔케이컨텐츠 수입사 20100207 (주)씨네월드 Cineworld 수입사 2001-F222 15세관람가 2014-MF01083 15세이상관람가 조나단 놀란 Jonathan Nolan 시나리오(각본) 크리스토퍼 놀란 Christopher Nolan 시나리오(각본) 영화진흥위원회 > xmlA <- getNodeSet(sfdrP, "//actors/actor/peopleNm") > xmlA [[1]] 가이 피어스 [[2]] 캐리 앤 모스 [[3]] 조 판톨리아노 attr(,"class") [1] "XMLNodeSet" > > actor <- xmlToDataFrame(xmlA, stringsAsFactors = F) > actor text 1 가이 피어스 2 캐리 앤 모스 3 조 판톨리아노 > colnames(actor) <- "actor" > actor actor 1 가이 피어스 2 캐리 앤 모스 3 조 판톨리아노 > > dir [1] "크리스토퍼 놀란" > mv <- fg$film[1] > mv [1] "오디세이" > dtoa <- data.frame(dir,actor, id, mv) > dtoa dir actor id 1 크리스토퍼 놀란 가이 피어스 20010238 2 크리스토퍼 놀란 캐리 앤 모스 20010238 3 크리스토퍼 놀란 조 판톨리아노 20010238 mv 1 오디세이 2 오디세이 3 오디세이 > > library(readr) > write_excel_csv(dtoa, "fstudy.csv") > > # write.csv(dtoa, file="fstdy.csv", fileEncoding = "utf-8") > # > ====== searchMovieInfo.xml 2 ====== # searchMovieInfo.xml 2 sFd <- "http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.xml" KEY <- 'your_key_here' n.film <- nrow(filmId) n.film url <-URLencode(iconv(sFd, to="utf8")) url actors <- list() mvs <- list() dirs <- list() fg$film[2] for (i in 1:n.film) { # Code to execute # print(filmId[i,]) id <- filmId[i, ] fname <- fg$film[i] sfdr <- GET(url, query= list("key" = KEY, "movieCd"= id)) sfdrP <- xmlParse(sfdr) xmlA <- getNodeSet(sfdrP, "//actors/actor/peopleNm") actor <- xmlToDataFrame(xmlA, stringsAsFactors = F) actors[i] <- actor mvs[i] <- fname dirs[i] <- dir } actors mvs dirs # Create the dataframe movie_df <- tibble( Movie = mvs, Director = dirs, Actors = actors ) View(movie_df) # write_excel_csv(movie_df, "dirs.actors.csv") # write.csv(movie_df, "da.csv", row.names = T, fileEncoding = "UTF-8") > # searchMovieInfo.xml 2 > > sFd <- "http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.xml" > KEY <- 'your_key_here' > n.film <- nrow(filmId) > n.film [1] 10 > > url <-URLencode(iconv(sFd, to="utf8")) > url [1] "http://www.kobis.or.kr/kobisopenapi/webservice/rest/movie/searchMovieInfo.xml" > actors <- list() > mvs <- list() > dirs <- list() > fg$film[2] [1] "다크 나이트" > for (i in 1:n.film) { + # Code to execute + # print(filmId[i,]) + id <- filmId[i, ] + fname <- fg$film[i] + sfdr <- GET(url, query= list("key" = KEY, "movieCd"= id)) + sfdrP <- xmlParse(sfdr) + xmlA <- getNodeSet(sfdrP, "//actors/actor/peopleNm") + actor <- xmlToDataFrame(xmlA, stringsAsFactors = F) + actors[i] <- actor + mvs[i] <- fname + dirs[i] <- dir + } > actors [[1]] [1] "맷 데이먼" "톰 홀랜드" [3] "앤 해서웨이" "로버트 패틴슨" [5] "루피타 뇽오" "젠데이아 콜먼" [7] "샤를리즈 테론" [[2]] [1] "크리스찬 베일" "마이클 케인" [3] "히스 레저" "아론 에크하트" [5] "매기 질렌할" "게리 올드만" [7] "모건 프리먼" [[3]] [1] "킬리언 머피" "에밀리 블런트" [3] "맷 데이먼" "로버트 다우니 주니어" [5] "플로렌스 퓨" "조쉬 하트넷" [7] "케이시 애플렉" "라미 말렉" [9] "케네스 브래너" [[4]] [1] "레오나르도 디카프리오" [2] "엘렌 페이지" [3] "마리옹 꼬띠아르" [[5]] [1] "톰 하디" "마크 라이런스" [3] "케네스 브래너" "킬리언 머피" [5] "제임스 다시" "케빈 구스리" [[6]] [1] "존 데이비드 워싱턴" "로버트 패틴슨" [3] "엘리자베스 데비키" "애론 테일러 존슨" [5] "마이클 케인" "케네스 브래너" [7] "히메쉬 파텔" "클레멘스 포시" [9] "유리 코로콜니코브" "앤드류 하워드" [11] "마틴 도노반" [[7]] [1] "가이 피어스" "캐리 앤 모스" [3] "조 판톨리아노" [[8]] [1] "크리스찬 베일" "게리 올드만" [3] "앤 해서웨이" "톰 하디" [5] "조셉 고든 레빗" [[9]] [1] "리암 니슨" "크리스찬 베일" [3] "마이클 케인" [[10]] [1] "매튜 매커너히" "앤 해서웨이" [3] "마이클 케인" "제시카 차스테인" [5] "케이시 애플렉" > mvs [[1]] [1] "오디세이" [[2]] [1] "다크 나이트" [[3]] [1] "오펜하이머" [[4]] [1] "인셉션" [[5]] [1] "덩케르크" [[6]] [1] "테넷" [[7]] [1] "메멘토" [[8]] [1] "다크 나이트 라이즈" [[9]] [1] "배트맨 비긴즈" [[10]] [1] "인터스텔라" > dirs [[1]] [1] "크리스토퍼 놀란" [[2]] [1] "크리스토퍼 놀란" [[3]] [1] "크리스토퍼 놀란" [[4]] [1] "크리스토퍼 놀란" [[5]] [1] "크리스토퍼 놀란" [[6]] [1] "크리스토퍼 놀란" [[7]] [1] "크리스토퍼 놀란" [[8]] [1] "크리스토퍼 놀란" [[9]] [1] "크리스토퍼 놀란" [[10]] [1] "크리스토퍼 놀란" > # Create the dataframe > movie_df <- tibble( + Movie = mvs, + Director = dirs, + Actors = actors + ) > View(movie_df) > # write_excel_csv(movie_df, "dirs.actors.csv") > # write.csv(movie_df, "da.csv", row.names = T, fileEncoding = "UTF-8")