이번에는 나이키(nike) 사이트를 크롤링 해 볼 것이다.
내가 가져올 값들은 아우터 부분의 아우터 이름명과 가격이다.
R을 실행해서 , 크롤링에 필요한 , xml과 rvest 패키지를 로딩시켜 준다 .
library(rvest)
library(XML)
url <- "http://www.nike.com/kr/ko_kr/w/men/ap/best-outer"
è url에 내가 크롤링 하고자 하는 사이트의 url 값을 넣어준다.
doc <- read_html(url, encoding = "utf-8")
è 이 url을 html으로써 읽어 온다
이제 html에 접근하기 위해서 nike 사이트를 접속해 주면 되는데 ,
Nike 사이트는 다음과 같은 구조를 가졌다.
다음을 보게 되면 아우터의 class 명은 item-location으로 지정되어 있는 것을 확인할 수 있었다.
# 옷 이름 가져오기 부분
prod_name <- doc %>% html_nodes(".item-title") %>% html_text()
è 내가 가져온 html에 접근을 해주는데 , 이때 html_nodes를 통해서 특정 class로 지정되어 있는 태그에 접근을 하며 , 그 클래스 하위 노드의 html_text()를 함으로써 값을 가져오는 것이다.
# 불필요한 문자 제거
prod_name <- gsub('\n','', prod_name)
prod_name <- gsub('\t','', prod_name)
prod_name <- gsub(',','', prod_name)
è 크롤링 하게 되면 html코드로 가져오게 되는데 , 이쁘지가 않다 . 그래서 정제작업을 해준다.
# 옷 가격 가져오기
price <- doc %>% html_nodes(".item-price") %>% html_text()
è 이름을 가져온 것처럼 똑같이 가격도 똑같이 가져온다.
# 가져온 옷 가격의 불필요한 문자 제거
price <- gsub('\n','', price)
price <- gsub('\t','', price)
price <- gsub(',','', price)
è 가격 또한 불필요한 것들을 정제해준다.
그런데 크롤링 한 값들을 보면 2개인 것들이 있다 . 이 값들을 보면 세일전 가격과 세일 후의 가격으로 확인된다.
그래서 나는 가져온 price에 특정 주소값을 다음과 같이 세일 후의 가격으로 바꿔주었다.
price[38] = "83300 원"
price[39] = "111300 원"
--> 세일 후의 가격을 위처럼 바꿔주는 것이다.
# 옷 의 이름과 , 가격을 하나의 새로운 프레임으로 만들어준다.
df <- data.frame(prod_name ,price)
근데 데이터 프레임으로 하나의 새로운 프레임을 만들어 보면 이쁘게 print가 되지 않는다.
그래서 space 를 함으로써 공백을 제거해 준다 .
또는 str_trim 해서 공백을 제거해 준다 .
df$price <- gsub('[[:space:]]','',df$price)
df$prod_name <- gsub('[[:space:]]','',df$prod_name)
è 근데 이렇게 해주면 조금 정리가 되긴 하지만 내가 원하는 스타일로 바뀌지는 않는다.
# 마지막 정제를 한다 .
Format 함수를 사용해서 특정 칼럼명을 정리해 준다 .
df$prod_name <- format(df$prod_name , justify = "left")
df$price <- format(df$price , justify ="right")
최종 결과값 :
최종 결과값은 위와같다. 그런데 문제는 :space:와 , str_trim을 해주어도 내가 원하는 스타일로 정리가 되질 않는다… 이 문제점은 계속 찾아봐야 할 것같다.
'학부공부 > 데이터마이닝과통계' 카테고리의 다른 글
web_crawling + wordCloud (0) | 2018.11.15 |
---|---|
동아신문 스크랩핑 (0) | 2018.11.14 |
쿠팡 웹 크롤링 맛보기 (2) | 2018.11.01 |
웹 스크래핑 맛보기(Web Scraping) (0) | 2018.10.30 |
기간환율변동 데이터 분석하기 (0) | 2018.10.25 |
#IT #먹방 #전자기기 #일상
#개발 #일상