-
R 크롤링 디시인사이드 (DC Inside) GET / POST 방식R + Crawling (크롤링) 2020. 2. 10. 13:25
#### 각키갤 GET/POST방식
링크_각키 <- c()
n <- 201
for(i in 1:n){
tryCatch({
res_yui <- GET(url = 'https://gall.dcinside.com/mgallery/board/lists/',
query = list(id = 'aragakiyui',
page=i))
cat(i, '페이지 수집 중. 상태코드는', status_code(x = res_yui), '입니다.\n')
#### 각키갤 링크 수집
링크.각키.tmp <- res_yui %>%
read_html() %>%
html_nodes('td.gall_tit.ub-word') %>%
html_nodes('a:nth-child(1)') %>%
html_attr('href') %>%
unique()
if (length(링크_각키.tmp) == 0) {
링크_각키 <- append(링크.각키, "수동확인")
} else {
링크_각키 <- append(링크_각키, 링크.각키.tmp)
} ## 수집한 링크가 없을경우 "수동확인", 제대로 수집한 경우는 "링크_각키"로 저장합니다
Sys.sleep(time = 1) #### (중요!) 반복되는 작업으로 디도스(DDOS)로 오인 받지 않을려면 반드시 넣습니다!!
}, error = function(e) cat("불러올 수 없습니다!\n"))
}
## 링크 분할
링크_각키_no <- c()
링크_각키_page <- c()
링크_각키 <- strsplit(링크_각키, split="&")
for(i in 1:length(링크_각키)){
링크_각키_no.tmp <- 링크_각키[[i]][2]
링크_각키_page.tmp <- 링크_각키[[i]][3]
링크_각키_no <- append(링크_각키_no, 링크_각키_no.tmp)
링크_각키_page <- append(링크_각키_page, 링크_각키_page.tmp)
}
링크_각키_no <- str_replace_all(링크_각키_no,"no=","")
링크_각키_page <- str_replace_all(링크_각키_page,"page=","")
## 페이지별 element 수집
제목_각키 <- c()
작성자_각키 <- c()
날짜_각키 <- c()
본문_각키 <-c()
주소_각키 <-c()
for(i in 1:length(링크_각키)){
tryCatch({
res_yui <- GET(url = 'https://gall.dcinside.com/mgallery/board/view/',
query = list(id = 'aragakiyui',
no = 링크_각키_no[i],
page = 링크_각키_page[i]))
cat(i, '페이지 수집 중. 상태코드는', status_code(x = res_yui), '입니다.\n')
## 제목
제목.각키.tmp <- res_yui %>%
read_html() %>%
html_nodes("span.title_subject") %>%
html_text()
if (length(제목.각키.tmp) == 0) {
제목_각키 <- append(제목_각키, "수동확인")
} else {
제목_각키 <- append(제목_각키, 제목.각키.tmp)
}
## 작성자
작성자.각키.tmp <- res_yui %>%
read_html() %>%
html_nodes("div.fl") %>%
html_nodes("span.nickname") %>%
html_nodes("em") %>%
html_text()
if (length(제목.각키.tmp) == 0) {
작성자_각키 <- append(작성자_각키, "수동확인")
} else {
작성자_각키 <- append(작성자_각키, 작성자.각키.tmp)
}
## 날짜
날짜.각키.tmp <- res_yui %>%
read_html() %>%
html_nodes("span.gall_date") %>%
html_text()
if (length(날짜.각키.tmp) == 0) {
날짜_각키 <- append(날짜_각키, "수동확인")
} else {
날짜_각키 <- append(날짜_각키, 날짜.각키.tmp)
}
## 본문
본문.각키.tmp <- res_yui %>%
read_html() %>%
html_nodes("div.writing_view_box") %>%
html_text()
if (length(본문.각키.tmp) == 0) {
본문_각키 <- append(본문_각키, "수동확인")
} else {
본문_각키 <- append(본문_각키, 본문.각키.tmp)
}
## 주소(URL)
주소_각키 <- append(주소_각키, 링크_각키[i])
Sys.sleep(time = 1) #### (중요!) 반복되는 작업으로 디도스(DDOS)로 오인 받지 않을려면 반드시 넣습니다!!
}, error = function(e) cat("불러올 수 없습니다!\n"))
}
## 데이터 전처리
본문_각키 <- str_replace_all(본문_각키,"\n","")
본문_각키 <- str_replace_all(본문_각키,"\t","")
## 데이터프레임으로 합치기 및 csv파일로 저장
df_각키 <- data.frame(제목_각키, 작성자_각키, 날짜_각키, 본문_각키, 주소_각키)
write.csv(df_각키, file = "D:/df_각키.csv", row.names=FALSE)'R + Crawling (크롤링)' 카테고리의 다른 글
R 크롤링 클리앙 (Clien) GET / POST 방식 (0) 2020.02.12 R 크롤링 클리앙(Clien) GET / POST + Selenium (셀레니움) (0) 2020.02.11 R 크롤링 디시인사이드 (DC Inside) GET / POST + Selenium (셀레니움) (0) 2020.02.10 R 크롤링 RSelenium (셀레니움) 을 크롬에서 구동하기 (0) 2020.02.09 R 크롤링 rjava 설치하기 (0) 2020.02.09