terminal code R을 이용해 실행하기
크롤링 환경을 자동으로 사용하는데 있어서 매번 환경 구축해주는 것이 귀찮은 일이다.
이에 따라 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")
'R > crawling' 카테고리의 다른 글
동네예보 최종 (0) | 2019.08.07 |
---|---|
네이버 실시간 검색어 크롤링하기 (0) | 2019.07.04 |
기상청 자료 다운로드 (0) | 2019.05.22 |
XML package를 활용한 정적 크롤링 (0) | 2019.04.15 |
PlotGoogleMaps 사용해 AWS, ASOS 위치 나타내기 (0) | 2019.04.11 |
apply 와 sapply의 차이
apply문은 array에 적용되듯이 하나의 자료타입을 가질 수 있다.
때문에 apply(data,2,is.numeric)등이 원하는 결과를 얻지 못할 수 있다.
반면 sapply문이나 lapply문의 경우 어레이로 변환하지 않기 때문에 원하는 결과값을 얻을 수 있다.
R의 자동변환은 다음과 같은 순서로 진행이된다.
character > complex > numeric > integer > logical > raw
따라서 특정 타입의 변수만을 추출하기 위해서는 sapply(data,is.numeric)등을 사용하면 편리할 수 있다.
'R' 카테고리의 다른 글
[공공데이터 포털] 버스 정류소 API 가져오기 (0) | 2019.11.02 |
---|---|
숫자가 너무커서 제대로 안불러와질 때 (0) | 2019.09.16 |
문자열 다루기와 텍스트 마이닝 (0) | 2019.07.07 |
자신에게 맞게 R 최적화를 해보자. (0) | 2019.06.21 |
R Cloud 사용하기 (0) | 2019.06.21 |
문자열 다루기와 텍스트 마이닝
'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 최적화를 해보자.
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 사용하기
요즘 여러가지 장점들로 클라우드 서비스가 대세를 이루고 있다. 그에 따라 python에서 코랩을 제공하듯, 코랩 처럼 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 |