-
-
Notifications
You must be signed in to change notification settings - Fork 8
사용 예시
Chan-Yub Park edited this page Jul 27, 2017
·
9 revisions
카테고리별 뉴스 수집 예시(v0.0.2)
if (!require('devtools')) install.packages('devtools')
devtools::install_github('forkonlp/DNH4')
library(DNH4)
# 메인 카테고리 id 가져옵니다.
cate<-getMainCategory()
# 예시를 위해 하나만 선택합니다.
# 여기는 society를 선택했습니다.
tcate<-cate$url[1]
# 정치의 세부 카테고리를 가져옵니다.
subCate<-cbind(url1=tcate,getSubCategory(categoryUrl=tcate))
# 그중에 1번째, 2번째 세부 카테고리를 정했습니다.
tscate<-subCate$url[1:2]
# 목표 날짜를 지정합니다.
strDate<-"20160101"
endDate<-"20160102"
strTime<-Sys.time()
midTime<-Sys.time()
for (date in strDate:endDate){
for (url1 in tcate){
for (url2 in tscate){
urlm<-gsub("/","",url1)
urls<-gsub("/","",url2)
print(paste0(date," / ",urlm," / ",urls ," / start Time: ", strTime," / spent Time: ", Sys.time()-midTime," / spent Time at first: ", Sys.time()-strTime))
midTime<-Sys.time()
# 뉴스 리스트 페이지의 url을 sid1, sid2, date로 생성합니다.
pageUrl<-paste0("http://media.daum.net/breakingnews",url1,url2,"?regDate=",date)
# 리스트 페이지의 마지막 페이지수를 가져옵니다.
max<-getMaxPageNum(pageUrl)
for (pageNum in 1:max){
print(paste0(date," / ",urlm," / ",urls," / ",pageNum, " / start Time: ", strTime," / spent Time: ", Sys.time()-midTime," / spent Time at first: ", Sys.time()-strTime))
midTime<-Sys.time()
# 페이지넘버를 포함한 뉴스 리스트 페이지의 url을 생성합니다.
pageUrl<-paste0("http://media.daum.net/breakingnews",url1,url2,"?regDate=",date,"&page=",pageNum)
# 뉴스 리스트 페이지 내의 개별 다으 뉴스 url들을 가져옵니다.
newsList<-getUrlListByCategory(pageUrl)
newsData<-c()
# 가져온 url들의 정보를 가져옵니다.
for (i in 1:nrow(newsList)){
print(paste0("get content : ",i ," / ",nrow(newsList)))
# 불러오기에 성공할 때 까지 반복합니다.
tem<-try(getContent(newsList$news_links[i]), silent = TRUE)
while(class(tem)=="try-error"){
tem<-try(getContent(newsList$news_links[i]), silent = TRUE)
print(paste0("try again: ",newslink))
}
if(class(tem$datetime)[1]=="POSIXct"){
newsData<-rbind(newsData,tem)
}
}
dir.create("./data",showWarnings=F)
# 가져온 뉴스들(보통 한 페이지에 17개의 뉴스가 있습니다.)을 csv 형태로 저장합니다.
write.csv(newsData, file=paste0("./data/news_",urlm,"_",urls,"_",date,"_",pageNum,".csv"), row.names = F, fileEncoding="UTF-8")
}
}
}
}