이미지 벡터화해서 저장하기
png('파일이름.png',type='cairo', antialias = "subpixel",res=t, family = "malgun",width=5*t,height=5*t)
width 와 height로 해상도 조절
type에 cairo를 주면 이미지가 벡터화 된다.
'R' 카테고리의 다른 글
leaflet 지도그리기 (0) | 2019.04.09 |
---|---|
객체지향언어란 (0) | 2019.04.08 |
정규표현식(R) (3) | 2019.03.19 |
R 기본 플롯 사용하기 (0) | 2019.03.19 |
R 개인 패키지만들기에서 간단한 사용법 까지(git을 활용) (0) | 2019.03.16 |
크롤링을 활용한 미세먼지 실시간 시각화하기
library(RSelenium)
list.of.packages <- c('classInt','rgdal',"xml2","XML","leaflet","leaflet.extras","classInt",'rjson','rgdal','protolite','sp','maps','maptools')
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages, dependencies = TRUE)
map <- readOGR( "skorea_municipalities_geo_simple.json")
port1=4568L
remDr<-rsDriver(port=port1)
remDr$open()
url='https://www.airkorea.or.kr/web/sidoCompare?itemCode=10008&pMENU_NO=102'
remDr$navigate(url)
remDr$screenshot(display = T)
source=remDr$getPageSource()[[1]]
data=XML::readHTMLTable(source,stringsAsFactors = FALSE)[[1]]
remDr$close()
head(data)
rownames(data)<-data[,1]
data=data[,-1]
data=t(data)
data=data.frame(area=rownames(data),HourMean=data[,1])
rownames(data)=NULL
data$area=as.character(data$area)
data$HourMean=as.numeric(data$HourMean)
setwd('/home/ducj/data/data/shpfile/shp/CTPRVN_201703')
map=readOGR('TL_SCCO_CTPRVN.shp',encoding = 'euc-kr',stringsAsFactors = F)
map@data$CTP_KOR_NM<-c('서울','부산','대구','인천','광주','대전','울산','세종','경기','강원','충북','충남','전북','전남','경북','경남','제주')
map@data=merge(map@data,data,by.x='CTP_KOR_NM',by.y='area',all=T)
map@data=map@data[order(map@data$CTPRVN_CD),]
plot(map,col=map@data$HourMean)
map=spTransform(map,"+init=epsg:4326")
map=spTransform(map,CRS("+proj=longlat +ellps=GRS80"))
#addDrawToolbar는 선 다각형 사각형을 바로 지도에 나타낼 수 있게 해준다.
map2=leaflet() %>%
addTiles() %>%
addDrawToolbar(
editOptions=editToolbarOptions(selectedPathOptions=selectedPathOptions())
)
p <- colorBin("YlOrRd", domain = map@data$HourMean, bins = classIntervals(map@data$HourMean, 7)$brks)
map2%>%
addPolygons(data=map,color = ~p(HourMean),stroke=F, smoothFactor = 0.2,fillOpacity = .5)%>%
addLegend(data=map,pal=p,values=~HourMean,position = 'bottomright',title = date())
'R > crawling' 카테고리의 다른 글
네이버 실시간 검색어 크롤링하기 (0) | 2019.07.04 |
---|---|
기상청 자료 다운로드 (0) | 2019.05.22 |
XML package를 활용한 정적 크롤링 (0) | 2019.04.15 |
PlotGoogleMaps 사용해 AWS, ASOS 위치 나타내기 (0) | 2019.04.11 |
RSelenium을 활용하여 위경도 가져오기 (0) | 2019.03.21 |
RSelenium을 활용하여 위경도 가져오기
RSelenium 사용하기
예전엔 따로 다운로드 받지 않아도 패키지만 설치해서 크롤링이 가능했는데 크롬버전 업그레이드 때문인지 cmd로 chromeDriver를 열어주는 방법을 사용해야 된다.
목차
1. 필요 파일 다운로드
2. 크롤링 환경 만들기
3. R에서 크롤링 시작하기
1.필요파일 다운로드
우선 cmd로 chrome Driver를 열어주는 방법을 알아보자.
아래 3개의 파일을 같은 경로에 다운로드 받자.
아래와 같이 selenium-server와 geckodriver, chromedriver 3개를 설치해주면 된다.
다운로드 받은 파일을 한 경로에 옮긴다.
위에서 보시다 시피 나의 경로는 C:\selenium이다.
2. 크롤링 환경 만들기
관리자권한으로 명령프롬프트를 실행한다.
아래의 명령어를 입력한다.
참고로 명령프롬프트의 붙여넣기는 shift + insert 이다.
cd c:\selenium
java -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-3.9.1.jar -port 4445
port 는 자기 자신이 열고싶은 번호를 사용하면 되며 selenium-server-standalone의 버전은 자신의 것과 같게 맞춰주면 된다.
3. R에서 크롤링 시작하기
library(RSelenium)
library(stringr)
remDr <<- remoteDriver(port =4445L,browser='chrome')
name=c('대구대','영남대','계명대')
geo_code=function(name,n=3){
url='https://www.google.com/maps'
remDr$navigate(url)
search=NULL
while(length(search)==0){
assign('search',remDr$findElement(using='css selector',value='input#searchboxinput.tactile-searchbox-input'))
}
data=NULL
for(i in 1:length(name)){
search$clearElement()
search$sendKeysToElement(list(name[i],key='enter'))
Sys.sleep(n)
lonlat=as.numeric(str_split(substr(remDr$getCurrentUrl()[[1]],
regexpr('@',remDr$getCurrentUrl()[[1]])+1,regexpr(',[0-9]+z',remDr$getCurrentUrl()[[1]])-1),',')[[1]])
data=rbind(data,data.frame(name=name[i],lat=lonlat[1],lon=lonlat[2]))
}
return(data)
}
geo_code(name)
remDr$close()
'R > crawling' 카테고리의 다른 글
네이버 실시간 검색어 크롤링하기 (0) | 2019.07.04 |
---|---|
기상청 자료 다운로드 (0) | 2019.05.22 |
XML package를 활용한 정적 크롤링 (0) | 2019.04.15 |
PlotGoogleMaps 사용해 AWS, ASOS 위치 나타내기 (0) | 2019.04.11 |
크롤링을 활용한 미세먼지 실시간 시각화하기 (0) | 2019.03.21 |
selenium 사용해서 위경도 가져오기
Selenium 사용하기
예전엔 따로 다운로드 받지 않아도 패키지만 설치해서 크롤링이 가능했는데 크롬버전 업그레이드 때문인지 cmd로 chromeDriver를 열어주는 방법을 사용해야 된다.
목차
1. 필요 파일 다운로드
2. 크롤링 환경 만들기
3. python에서 크롤링 시작하기
1.필요파일 다운로드
우선 cmd로 chrome Driver를 열어주는 방법을 알아보자.
아래 3개의 파일을 같은 경로에 다운로드 받자.
아래와 같이 selenium-server와 geckodriver, chromedriver 3개를 설치해주면 된다.
다운로드 받은 파일을 한 경로에 옮긴다.
위에서 보시다 시피 나의 경로는 C:\selenium이다.
2. 크롤링 환경 만들기
아나콘다 프롬프트에서 pip install selenium 을 통해 selenium 다운로드
3. python에서 크롤링 시작하기
'python > crawling' 카테고리의 다른 글
[Selenium] 기상자료 크롤링 (1) | 2021.04.03 |
---|---|
크롤링과 python (0) | 2021.04.03 |
python selenium 자주쓴거 정리 (0) | 2020.03.23 |
나라장터 open api crawling (0) | 2020.03.01 |
[나라장터] 크롤링 (2) | 2019.11.14 |
깃 용어 정리
저장소(Repository)
깃 시스템의 기본 구성요소로 프로젝트가 저장되는 하나의 폴더의 개념. 저장소는 뭔가 변했을 때 그 이력을 저장하며, 누가 무엇을 바꿨는지 추적가능
커밋(commit)
실제로 변경된 내용을 저장소에 추가하는 과정. 고유한 아이디와 메시지가 부여
디프(diff)
두 커밋 간의 변경된 내용의 차이를 의미
브랜치(branch)
저장소에 대한 수평 버전의 하나. 마스터 브랜치에는 영향을 미치지 못함. 따라서 새로운 기능을 실험할 때 사용
머지(merge)
하나의 브랜치에서 바뀐 내용을 같은 저장소에 있는 다른 브랜치로 적용하는 과정
패치(fetch)
원격 저장소로부터 가장 최근의 변경된 내용을 가져와 로컬 저장소와는 머징하지 않는 것
풀(pull)
변경된 내용에 대한 페치와 머지가 결합된 과정. 여러사용자가 하나의 저장소에서 작업할 때 종종 사용.
푸시(push)
로컬 저장소의 내용을 원격 저장소로 보내는 과정.
참고
.gitignore파일
깃 저장소에 포함시키지 않을 파일
Revert버튼을 사용하면 마지막 커밋상태로 되돌아 간다.
History를 통해 모든 커밋을 볼 수 있다.
Checkout함수를 통해 새 브랜치 생성 가능
'그 외' 카테고리의 다른 글
[R] 재미삼아 푸는 문제 (0) | 2020.01.15 |
---|---|
지도 그림 그리기 예제 (0) | 2019.11.11 |
[주식] 키움 영웅문 통한 주식 자료다운로드 (0) | 2019.11.11 |
인공지능, 머신러닝 그리고 데이터마이닝의 차이점 (0) | 2019.07.01 |
알고리즘 (0) | 2019.04.08 |
정규표현식
library(XML)
line<-readLines(url,encoding=)
str_detect( , ‘특정값’) -특정 값이 있는지 T,F로 출력
strsplit – 구분자 단위로 쪼개기
문자열에서 일치하는 패턴 찾기
str_extract : 첫 패턴만 인식
str_extract_all : 모든 패턴 인식 -> 리스트 출력
[^],[:^ :] : 괄호 안에 ^이 있으면 반대의 의미
ex) [^A-z] : 영어가 아닌 값 추출
\\에 해당하는 경우 대문자이면 반대의 의미
\\w 문자+숫자지만 \\W이면 문자+숫자가 아닌경우
정수 추출 : “\\d”, [0-9], [:digit:]
연결된 대문자 추출‘[A-Z]+’ , [:upper:]
연결된 영어 추출 ‘[A-z]+’ ,[:alpha:]
연결된 소문자 추출’[a-z]+’ , [:lower:]
연결된 소문자 중 길이 제한 : ‘[a-z]{1,4}’
공백 추출 : [:black:], [:space:] <- 두 개가 서로 상이함 \\s
특수문자 추출 : [:punct:]
문자+숫자 추출 : [:alnum:], \\w
공백을 제외한 모든문자 추출 : [:graph:]
공백을 포함한 모든 문자 추출 : [:print:] , .와 같음
str_extract_all(문자열,‘[가-힣]+’) : 한글 단어 추출
str_extract_all(문자열,‘[ㄱ-힣]+’) : 한글 추출 ‘\\p{Hangul}+’도 사용 가능
str_extract_all(문자열,boundary(‘word’)) : 단어 단위로 추출
[0-9ㄱ-힣] 이런식으로 조합해 사용 가능
정량자
* 적어도 0번 매칭
+ 적어도 1번 매칭
? 많아야 한번 매칭
{n} 정확히 n번 매칭
{n,m} n번에서 m번 사이 매칭
ab*cd 이면 a와 cd사이 b 0번이상 가진 값을 추출해준다.
ab*cd 이면 a와 cd사이 b 1번이상 가진 값을 추출해준다.
^문자열 시작위치 매치
$문자열 끝 위치 매치
\\b 단어 양쪽 끝에 빈 문자열이 있으면 추출
\\bda 이면 da로시작하는 단어 중 좌우 하나라도 공백이 있으면 추출
ex)’daa’ ‘a daa ‘a da’
‘dda’는 da로 시작하지 않으므로 추출 안됨
$*+.?[]^{}|()\등을 사용하려면 \을 먼저 적고 사용해야된다
ex) \$
()역참조
gsub(‘ab’, “” ,c(‘ab’,‘ab 1’, ‘ab 3’) -> “” “ 1” “ 3”
gsub('(ab) 1','\\1 34',c('ab','ab 12','ab 3','1','ab1'))
ab를 가진 값 중 ab 1의 1값을 34로 바꾼다.
"ab" "ab 342" "ab 3" "1" "ab1"
str_trim(공백을 제거할 데이터)
pattern
<.+?> or <.*?> <>괄호 안에 문자 제거
(.+?)
“<.*?특정문자” 꺽쇠로 시작하고 특정문자를 포함하는 모든 문자 제거
'R' 카테고리의 다른 글
leaflet 지도그리기 (0) | 2019.04.09 |
---|---|
객체지향언어란 (0) | 2019.04.08 |
이미지 벡터화해서 저장하기 (0) | 2019.03.21 |
R 기본 플롯 사용하기 (0) | 2019.03.19 |
R 개인 패키지만들기에서 간단한 사용법 까지(git을 활용) (0) | 2019.03.16 |