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§ion=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
'데이터 갖고 놀기 > 실전 전투 R' 카테고리의 다른 글
function() 만들기 (0) | 2017.11.21 |
---|---|
function() 을 찾다.. (0) | 2017.11.09 |
googleVIS()로 모션차트(motionchart) 그리기 (0) | 2017.03.15 |
#dplyr 사용하여 평균그래프 with errorbar 그리기 (0) | 2017.02.24 |
R을 이용한 세계지도 그리기 (0) | 2017.02.17 |