데이터 갖고 놀기/실전 전투 R

R을 이용한 웹크롤링 그리고 워드클라우드(1)

고물상자 2017. 2. 23. 16:08

R로 특정 웹을 크롤링하여 원하는 정보를 얻은 후 텍스트 마이닝을 통해 

워드클라우드를 만든다. 


이번 블로그 내용은 내가 학습하기 보단 그냥 긁어서 몇가지 옵션만 바꾼 후 꾸준히 사용할 예정이므로 

스크립트를 굳이 외우려고 하지 않는다. 


#필요 패키지 

install.packages("httr")

install.packages("rvest")

install.packages("stringr")



library(httr)

library(rvest)

library(stringr)


#  게시판 URL

list.url = 'http://kin.naver.com/search/list.nhn?cs=utf8&query=검색어'


# 제목과 본문을 저장할 벡터

titles = c()

contents = c()


# 게시판 1~2페이지 크롤링

for(i in 1:2){

  url = modify_url(list.url, query=list(page=i))  # 게시판 URL에서 페이지를 변경

  h.list = read_html(url)  # 게시물 목록을 가져옴

  

  # 게시물 링크 추출

  title.links = html_nodes(h.list, '.basic1 dt a')

  article.links = html_attr(title.links, 'href')  

  

  for(link in article.links){

    h = read_html(link)  # 게시물을 가져옴

    

    # 제목

    title = html_text(html_nodes(h, '.end_question._end_wrap_box h3'))

    

    title = str_trim(repair_encoding(title))

    

    titles = c(titles, title)

    

    # 내용

    content = html_nodes(h, '.end_question .end_content._endContents')

    

    ## 모바일 질문 내용 

    no.content = html_text(html_nodes(content, '.end_ext2'))

    

    content = repair_encoding(html_text(content))

    

    ## 모바일 질문 내용 삭제

    ## 예) http://kin.naver.com/qna/detail.nhn?d1id=8&dirId=8&docId=235904020&qb=7Jes65Oc66aE&enc=utf8&section=kin&rank=19&search_sort=0&spq=1

    if (length(no.content) > 0)

    {

      content = str_replace(content, repair_encoding(no.content), '')

    }

    

    content <- str_trim(content)

    

    contents = c(contents, content)

    

    print(link)

    

  }

}


# 결과 저장

result = data.frame(titles, contents)

result


View(result)


write.csv(result, "C:/Users/user/Desktop/R/R1/naver.csv")


이후 wordcloud 혹은 wordlcloud2를 이용하여 텍스트마이닝 및 시각화를 수행


도움 출처 

http://blog.naver.com/kkhh4/220502721423