RLab03
교보문고 베스트셀러 웹 크롤링
# 웹 크롤링1 : 교보문고 주간 베스트셀러
# R 패키지 설치
# httr 패키지(GET), rvst 패키지 (read_html())
install.packages("httr")
install.packages("rvest")
library(httr)
library(rvest)
# GET 함수로 서버에 정보 요청하기.
url <- "http://www.kyobobook.co.kr/bestSellerNew/bestseller.laf?orderClick=d79"
# 위 URL에 있는 html코드를 가져와야함.
# 1)GET함수 이용해서 서버에 요청.
# 2)read_html()함수 이용해서 html코드 읽어들임.
data <- GET(url)
data
my_html <- read_html(data, encoding = "EUC-KR")
my_html
# 원하는 정보인 '주간베스트셀러 도서', 개발자도구로 확인
# <strong>태그로 감싸져 있음.
pick1 <- html_nodes(my_html, 'strong')
pick1
# 책제목 뿐만아니라 많은 정보들이 불러와짐.
# strong태그로 a태그가 감싸고 있었음.
pick1 <- html_nodes(my_html, 'a strong')
pick1
# title 클래스이름인 a태그안의 strong태그 추출
pick1 <- html_nodes(my_html, '.title a strong')
pick1
# 태그를 제거하고 텍스트만 가져옴. html_text()사용
result <- html_text(pick1)
result
[1] "트렌드 코리아 2021"
[2] "달러구트 꿈 백화점"
[3] "공정하다는 착각"
[4] "일인칭 단수(양장본 HardCover)"
[5] "어떻게 말해줘야 할까"
[6] "셀트리오니즘"
[7] "돈의 속성(100쇄 기념 에디션)(양장본 HardCover)"
[8] "나의 하루는 4시 30분에 시작된다"
[9] "마음챙김의 시"
[10] "존리의 금융문맹 탈출"
[11] "다산의 마지막 습관"
[12] "블랙 쇼맨과 이름 없는 마을의 살인(양장본 HardCover)"
[13] "2인조(양장본 HardCover)"
[14] "주식투자 무작정 따라하기(2020)(개정판)"
[15] "미스터 마켓 2021"
[16] "아몬드(양장본 HardCover)"
[17] "위기의 시대, 돈의 미래(양장본 HardCover)"
[18] "인생은 소설이다"
[19] "좋은 사람에게만 좋은 사람이면 돼"
[20] "Go Go 카카오프렌즈. 17: 러시아"
멜론 차트 순위 웹 크롤링
# 웹 크롤링2 : 멜론 차트 순위 -top 10곡 리스트 가져오기
library(httr)
library(rvest)
url <- "https://www.melon.com/chart/index.htm"
# GET함수 이용하여 서버에 정보 요청
get_url <- GET(url)
get_url
# 인코딩 방식 utf-8
# read_html() 이용하여 html코드 불러옴
my_html <- read_html(get_url, encoding = "utf-8")
my_html
# 개발자도구로 1위 제목을 확인
# a태그로 감싸져 있음. 일단 a태그를 전부 가져옴
pick1 <- html_nodes(my_html, "a")
pick1
# a태그는 span태그 하위에 있고, span태그는 다시 div태그 하위에 있음. div태그에는 class 속성값이 ellipsis rank01 이라는 클래스가 있음.
pick1 <- html_nodes(my_html, ".ellipsis.rank01")
pick1
# a태그만 추출
pick2 <- html_nodes(pick1, "a")
pick2
# a태그의 내용만 추출, trim옵션을 TRUE
pick3 <- html_text(pick2, trim = TRUE)
pick3
[1] "VVS (Feat. JUSTHIS) (Prod. GroovyRoom)"
[2] "내일이 오면 (Feat. 기리보이, BIG Naughty (서동현))"
[3] "Dynamite"
[4] "잠이 오질 않네요"
[5] "힘든 건 사랑이 아니다"
[6] "밤하늘의 별을(2020)"
[7] "Achoo (Feat. pH-1, HAON) (Prod. GroovyRoom)"
[8] "Lovesick Girls"
[9] "취기를 빌려 (취향저격 그녀 X 산들)"
[10] "Life Goes On"
[11] "Freak (Prod. Slom)"
[12] "뿌리 (Feat. JUSTHIS) (Prod. GroovyRoom)"
[13] "오래된 노래"
[14] "All I Want For Christmas Is You"
[15] "Savage Love (Laxed - Siren Beat) (BTS Remix)"
[16] "내 마음이 움찔했던 순간 (취향저격 그녀 X 규현)"
[17] "DON'T TOUCH ME"
[18] "딩가딩가 (Dingga)"
[19] "When We Disco (Duet with 선미)"
[20] "어떻게 이별까지 사랑하겠어, 널 사랑하는 거지"
네이버 영화 순위 웹 크롤링
# 웹 크롤링3 : 네이버 영화 순위
library(httr)
library(rvest)
# 네이버에서 박스오피스라고 검색
url <- "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%B0%95%EC%8A%A4%EC%98%A4%ED%94%BC%EC%8A%A4"
get_url <- GET(url)
get_url
my_html <- read_html(get_url, encoding = "utf-8")
my_html
# 개발자도구를 이용하여 1위 제목에 접근
# div태그의 class 속성값 title_box을 이용해서 추출
pick1 <- my_html %>% html_nodes(".title_box")
pick1
# 태그 내용만 추출
pick1 <- my_html %>% html_nodes(".title_box") %>%
html_text(trim = TRUE)
pick1
[1] "조제 2.2만명"
[2] "이웃사촌 7,864명"
[3] "도굴 3,736명"
[4] "800 2,545명"
[5] "런 1,714명"
[6] "페이트 스테이 나이트 헤븐즈... 953명"
[7] "극장판 바이올렛 에버가든 877명"
[8] "덩케르크 708명"
[9] "인터스텔라 698명"
[10] "스웨그 676명"