data analysis & visualization

크롤링 환경을 자동으로 사용하는데 있어서 매번 환경 구축해주는 것이 귀찮은 일이다.

이에 따라 terminal의 code를 R 스크립트에서 실행하는 코드를 찾아보았다.

rstudioapi 패키지가 그 기능을 하고 있었다.

 

install.packages('rstudioapi')
library(rstudioapi)

 

먼저 terminal을 생성하고 

 

myTerm <- rstudioapi::terminalCreate()

 

실행될 때까지 기다려준다.

 

if (!rstudioapi::terminalRunning(myTerm)) {
  # start the terminal shell back up, but don't bring to front
  rstudioapi::terminalActivate(myTerm, show = FALSE)
  # wait for it to start
  while (!rstudioapi::terminalRunning(myTerm)) {
    Sys.sleep(0.1)
  }

 

실행이 되면 terminalSend 함수를 활용하여 terminal에 commend를 입력해보자.

 

rstudioapi::terminalSend(myTerm, "cd c:/selenium\n
java -Dwebdriver.gecko.driver=\"geckodriver.exe\" -jar selenium-server-standalone-3.9.1.jar -port 4445\n") 



apply 와 sapply의 차이

R2019. 7. 15. 00:43

apply문은 array에 적용되듯이 하나의 자료타입을 가질 수 있다.

때문에 apply(data,2,is.numeric)등이 원하는 결과를 얻지 못할 수 있다.

반면 sapply문이나 lapply문의 경우 어레이로 변환하지 않기 때문에 원하는 결과값을 얻을 수 있다.

 

R의 자동변환은 다음과 같은 순서로 진행이된다.

 

character > complex > numeric > integer > logical > raw

 

따라서 특정 타입의 변수만을 추출하기 위해서는 sapply(data,is.numeric)등을 사용하면 편리할 수 있다.

 

 

'R' 카테고리의 다른 글

숫자가 너무커서 제대로 안불러와질 때  (0) 2019.09.16
apply 와 sapply의 차이  (0) 2019.07.15
자신에게 맞게 R 최적화를 해보자.  (0) 2019.06.21
R Cloud 사용하기  (0) 2019.06.21
GET 과 POST(rvest)  (0) 2019.06.10

먼저 크롬을 열고 네이버데이터랩으로 이동!

remDr$open()
url='https://datalab.naver.com/keyword/realtimeList.naver?where=main'
remDr$navigate(url)

source를 가져온 후 text로 변환


html <- remDr$getPageSource()[[1]] 
html <- read_html(html)
sWords <- html %>% html_nodes("div.rank_inner") %>% html_text()

str_split을 통해 분리
sWords=str_split(sWords,'\n')

n=length(sWords)

단어를 클랜징
sWords2=gsub(' ','',sWords[[i]])
sWords2=sWords2[nchar(sWords2)!=0]

제목 추출
title=sWords2[1]
sWords2=sWords2[-1]

df에 데이터프래임 생성

(옵션에 stringsAsFactors=F를 주면,마지막에 정렬해주지 않아도 된다.)

df=data.frame(rank=sWords2[seq(1,length(sWords2),2)],sWords2[seq(2,length(sWords2),2)])
colnames(df)=c('rank',title)
data=df

반복


for(i in 2:n){
sWords2=gsub(' ','',sWords[[i]])
sWords2=sWords2[nchar(sWords2)!=0]
title=sWords2[1]
sWords2=sWords2[-1]
df=data.frame(rank=sWords2[seq(1,length(sWords2),2)],sWords2[seq(2,length(sWords2),2)])
colnames(df)=c('rank',title)
data=merge(data,df,by='rank')
}

data$rank=as.numeric(data$rank)
data[order(data$rank),]
data


remDr$close()

 

전체 코드

remDr$open()
url='https://datalab.naver.com/keyword/realtimeList.naver?where=main'
remDr$navigate(url)

html <- remDr$getPageSource()[[1]] 
html <- read_html(html)
sWords <- html %>% html_nodes("div.rank_inner") %>% html_text()
sWords=str_split(sWords,'\n')

n=length(sWords)

sWords2=gsub(' ','',sWords[[i]])
sWords2=sWords2[nchar(sWords2)!=0]
title=sWords2[1]
sWords2=sWords2[-1]
df=data.frame(rank=sWords2[seq(1,length(sWords2),2)],sWords2[seq(2,length(sWords2),2)])
colnames(df)=c('rank',title)
data=df

for(i in 2:n){
sWords2=gsub(' ','',sWords[[i]])
sWords2=sWords2[nchar(sWords2)!=0]
title=sWords2[1]
sWords2=sWords2[-1]
df=data.frame(rank=sWords2[seq(1,length(sWords2),2)],sWords2[seq(2,length(sWords2),2)])
colnames(df)=c('rank',title)
data=merge(data,df,by='rank')
}
data$rank=as.numeric(data$rank)
data[order(data$rank),]
data

'R > crawling' 카테고리의 다른 글

동네예보 최종  (0) 2019.08.07
terminal code R을 이용해 실행하기  (0) 2019.07.31
기상청 자료 다운로드  (0) 2019.05.22
XML package를 활용한 정적 크롤링  (0) 2019.04.15
PlotGoogleMaps 사용해 AWS, ASOS 위치 나타내기  (0) 2019.04.11

R의 시동파일 위치


1. R HOME


2. R profile


3. R environ



R은 세션 당 하나의 R profile과 R environ을 사용한다.


R HOME


R_HOME은 R이 설치된 디렉터리로 R.home()이나 Sys.getenv('HOME')을 활용하여 확인 할 수 있다.



Rprofile


Rprofile은 특정 프로젝트 실행시 바로 로딩되는 스크립트를 만들고 싶을 때 사용하므로, 프로젝트 만드는 걸 할 줄 모르는 사람을 위해 간단히 프로젝트 만드는 방법을 나타냈다.


아래 그림에서 Console 글 위에 왼쪽 2번째 파란색 육면체를 클릭한다.



클릭하면 New Project 창이 열리는데 New Directory를 눌러준다.



그런 다음 New Project를 눌러 준다.



directory name 에 원하는 프로젝트 이름을 넣어준 후 Browse... 을 눌러 프로젝트가 저장될 경로를 설정한다.



생성되면 아래와 같이 창이 뜬다.



앞서 특정 프로젝트에서 시동 시 로딩되는 스크립트를 만들고 싶으면 .Rprofile을 디렉토리에 생성하여 R 코드를 추가하면 된다고 하였다.


file.edit('~/.Rprofile')을 사용하면 된다.


코드를 실행하면 아래와 같은 창이 열린다.



test를 위해 아래같이 코드를 저장 하였다.



프로젝트를 다시 실행하면 아래와 같이 메세지가 나타난다.(Ctrl+Shift+F10 사용)






프로젝트의 환경변수 또한 수정할 수 있다.


user_renviron=path.expand(file.path('~','.Renviron'))


file.edit(user_reviron)



>꺽쇄나 + 가 불편하다면 아래와 같이 옵션을 수정하여 제거 가능하다.


options에서

diGits로 표시되는 숫자의 자리수 변경

show.signif.stars로 p-value의 유의미를 나타내는 * 표시 유무

stringsAsFactors=F 등을 설정 가능 하다.


이밖에는 ?options 를 사용하여 확인하자.



효율적인 R 프로그래밍 책을 참고하였다.

'R' 카테고리의 다른 글

apply 와 sapply의 차이  (0) 2019.07.15
문자열 다루기와 텍스트 마이닝  (0) 2019.07.07
R Cloud 사용하기  (0) 2019.06.21
GET 과 POST(rvest)  (0) 2019.06.10
텍스트마이닝(사회관계망, 워드클라우드)  (0) 2019.06.06

R Cloud 사용하기

R2019. 6. 21. 02:15






요즘 여러가지 장점들로 클라우드 서비스가 대세를 이루고 있다. 그에 따라 python에서 코랩을 제공하듯, 코랩 처럼 R 또한 클라우드 서비스를 제공한다. 


웹에서 R 사용하기


위 링크를 따라 들어가면 R Studio Cloud 에 들어가진다. 로그인을 하자.



로그인을 하면 아래와 같은 창이 나타나는데 여기서 Project를 생성할 수 있다.


New Project를 클릭하여 새로운 프로젝트를 생성해보자.



클라우드 서비스는 웹 서비스이므로 일반 R과 데이터를 불러오는 면에서 차이가 있다. 


R Cloud 간단히 Upload를 통해 사용 가능하게 제공되고 있다.




파일은 위 그림에서 보이는  Upload를 활용하여 올릴 수 있다.




또한 클라우드 서비스의 장점은 협업이라 할 수 있는데 Workspace를 여러 명이서 사용 가능하다.


이는 Your Workspace의 왼쪽편을 누르면 목차가 열리는데 test를 클릭하면 멤버를 추가할 수 있다.




'R' 카테고리의 다른 글

문자열 다루기와 텍스트 마이닝  (0) 2019.07.07
자신에게 맞게 R 최적화를 해보자.  (0) 2019.06.21
GET 과 POST(rvest)  (0) 2019.06.10
텍스트마이닝(사회관계망, 워드클라우드)  (0) 2019.06.06
leaflet 지도그리기  (0) 2019.04.09