KyungHwan's etc.

R 웹 크롤링 or 워드클라우드 본문

R

R 웹 크롤링 or 워드클라우드

KyungHwan_0 2018. 10. 17. 11:16

R 웹 크롤링 or 워드클라우드

# 이 디렉터리에 분석할 데이터를 가져다 놓고 결과물을 생성합니다.

setwd("c:/r_working")  # <-- 작업 디렉토리는 임의로 지정하세요

## 크롤링 패키지 불러오기
install.packages("rvest")
library("rvest")
install.packages("R6")
library("R6")


# https://www1.president.go.kr/articles/1827   another speech


# html 주소를 url에 저장

url <- 'https://www1.president.go.kr/articles/4334'

# read_html 함수를 사용하여 html 페이지를 htxt 변수에 저장

library("xml2")
htxt <- read_html(url)
htxt

# html_nodes 함수를 사용하여 cs_body class에 해당하는 부분을 content 변수에 저장
library("rvest")
content <- html_nodes(htxt,'.cs_body')

# html_text 함수를 사용하여 text 부분을 speach 변수에 저장
speach <- html_text(content)
speach


## Step1. 분석 환경설정
## 한글에 대한 텍스트 마이닝 패키지 KoNLP 설치. 주의:o는 소문자
## 워드클라우드 패키치 wordcloud
## 워드클라우드 단어에 색상을 입히는 패키지 RColorBrewer

install.packages("KoNLP") # 한국어 관련 작업을 할 때 꼭 필요한 기능을 가진 패키지 입니다
library(KoNLP)  # 설치된 패키지를 Loading 합니다.

install.packages("RColorBrewer")
library(RColorBrewer)

## 세종사전 설치
useSejongDic()

## Step2. 데이터 정제
## 크롤링된 데이터에서 단어 추출하기
## 명사 추출 함수인 extracNoun 함수 사용

pword <- sapply(speach,extractNoun,USE.NAMES = F)
pword

## 필터링을 위해 unlist 함수를 사용해서 저장
data <- unlist(pword)
data

# 파일에 저장해 둡니다.
write(data,"moon_speech.txt")

## 글자수 2개 이상만 취급
data <- Filter(function(x){nchar(x)>=2},data)
data

## 불필요한 데이터 처리
## 한 번 이상의 숫자
data <- gsub("\\d+","",data)
data

## 새로운 라인
data <- gsub("\\n","",data)

## 줄 끝 문자를 제외한 모든 문자
data <- gsub("\\.","",data)
data <- gsub("\n","",data)
data <- gsub(" ","",data)
data <- gsub("-","",data)

data

## Step3. 워드클라우드

## 빈도표 작성
data_cnt <- table(data)
data_cnt

## 내림차순 정렬 후 상위 30개 표시
head(sort(data_cnt, decreasing=T), 30)


## 그래픽 구현창(팝업창) 생성

library(RColorBrewer)
palete <- brewer.pal(9, "Set1")

x11()

## 워드클라우드 실행
install.packages("wordcloud") # Word Cloud 작업을 해 주는 패키지 입니다
library(wordcloud)

wordcloud(names(data_cnt),freq=data_cnt,scale=c(5,0.5),rot.per=0.25,min.freq=1,
         random.order=F,random.color=T,colors=palete)

## 그림으로 저장합니다.
?savePlot
savePlot(filename = "moons_peech.png", type="png")


'R' 카테고리의 다른 글

카카오톡 대화 wordcloud 구현  (0) 2018.10.20
R을 이용한 차트 그리기  (0) 2018.10.16
R 기본 데이터형  (0) 2018.10.14
R 기본 문법 연습 3  (0) 2018.10.14
R 기본 문법 연습 2  (0) 2018.10.14
Comments