본문 바로가기

공부/R

동적웹페이지 이미지 크롤링 in R

본격적으로 R을 활용하여 이미지 크롤링을 해 볼 예정이다.

이미지 크롤링을 하기 전에 R-selenium 패키지가 준비되어있어야 한다. 

 

https://chumiinii.tistory.com/4

 

동적 웹페이지 크롤링 준비

Rselenium 패키지 설치 1) selenium 다운받기. (ver. 3.5.3) >>> https://www.seleniumhq.org/download/ Downloads Firefox GeckoDriver is implemented and supported by Mozilla, refer to their documentation..

chumiinii.tistory.com


R- 코드

install.packages('RSelenium')
install.packages("rvest")
install.packages("httr")

library(RSelenium)
library(rvest)
library(httr)

remDr <- remoteDriver(remoteServerAddr = "localhost" , 
                      port = 4445L,  
                      browserName = "chrome")
remDr$open()

 

#이 곳에 원하는 이미지 url을 넣어주면 된다.
remDr$navigate("https://www.google.com/search?q=truck&source=lnms&tbm=isch &sa=X&ved=0ahUKEwifiufv-e3jAhVYw4sBHZb8AzsQ_AUIEigC&biw=710&bih=667")

url_item<-remDr$getPageSource()[[1]]
url_item<-read_html(url_item, encoding="UTF-8")

 

# img태그 속의 data-src만 뽑아내는 과정이다
url_item2 <- url_item %>% html_nodes("img") %>% html_attr("data-src")
url_item2

 

# 이미지 내의 NA값을 전체적으로 지워주는 역할을 한다.
truckurl <- na.omit(url_item2)
truckurl

 

# for문을 이용해서 이미지를 다운로드 해준다. 
for (i in truckurl %>% length %>% seq){ download.file(truckurl[i], paste0("./truck/truck_", i, ".jpeg"), mode = "wb")}


이 코드 속에서 for문을 이용하여 다운로드 하는 것을 자세하게 뜯어보겠다.

 

for (i in truckurl %>% length %>% seq {download.file(truckurl[i], paste0("./truck/truck_", i, ".jpeg"), mode = "wb")

}

 

 

i in truckurl %>% length %>% seq

 

 : truckurl내에 있는 데이터의 길이(length)만큼 일정한 간격만큼(seq) 반복한다.

한마디로 변수에 있는 개수만큼 반복한다는 뜻이다.

 

download.file(truckurl[i], paste0("./truck/truck_", i, ".jpeg")

 

 : truckurl[i] - 각 변수를 하나씩 꺼내어 준다,

  "./truck/truck_" -  home밑에 truck폴더 밑에 truck_의 이름으로 저장한다.

  i - 1씩 증가하게 저장시킨다.

  ".jpeg" - jpeg형식으로 저장시킨다.

 

mode = "wb"

 

: 이진화 파일로 저장을 시켜야 컴퓨터 내에서 보일 때 우리가 생각하는 이미지로 저장이 된다.