install.packages("rvest")
install.packages("stringr")
library(rvest)
library(stringr)
# naver 지식인에서 대학생을 검색어로 사용
# main_url = "https://kin.naver.com/search/list.nhn?sort=none&query=대학생&period=1m§ion=kin&page="
main_url = "https://kin.naver.com/search/list.nhn?sort=none&query=%EB%8C%80%ED%95%99%EC%83%9D&period=1m§ion=kin&page="
kin_list = character()
title_list = character()
date_list = character()
for(page_url in 1:10){
number = 1
url = paste(main_url,1,sep="")
content = read_html(url)
link_node = html_nodes(content,"._nclicks\\:kin\\.txt") # from chrome develop mode
link_node = html_nodes(content,"._searchListTitleAnchor") # from javascript function
link_urls = html_attr(link_node, "href")
title = html_text(link_node)
title_list = append(title_list, title)
date_node = html_nodes(content,".txt_inline")
date = html_text(date_node)
date = as.Date(gsub("\\.","-",date))
date_list = append(date_list, date)
# .c-heading-answer__content
# #answer_2 > div._endContents.c-heading-answer__content
#answer_2 > div._endContents.c-heading-answer__content > div
#answer_3 > div._endContents.c-heading-answer__content > div
for(link in link_urls){
link = link_urls[2]
sub_content = read_html(link)
node1 = html_nodes(sub_content, ".cont_reply .box_collect .txt_collect")
node1 = html_nodes(sub_content, ".c-heading-answer__content-user p")
kin = html_text(node1)
kin = gsub("\n|\t","",kin)
realkin = character()
if(length(kin) != 0){ # 응답이 있을 때
for(i in 1:length(kin)){ # 12줄이니까 12번 돌아감
if(nchar(kin[i]) != 1){ # 빈 공백 줄 제거
realkin = append(realkin, kin[i])
}
}
realkin = paste(realkin, collapse="\n") # realkin : 여러가지 텍스트 collapse: 행 새로 이어질때마다 연결되는 것을 적어줌
} else {
realkin = ""
}
kin_list = append(kin_list, realkin)
print(sprintf("Number of article is %d", number))
number = number + 1
}
}
df = data.frame(date_list, title_list, kin_list)
df = df[order(df$date_list,decreasing = FALSE),]
colnames(df) = c("date","title","kin_reple")
write.csv(df, "naver_kin_대학생.csv", row.names = F)
# page_url = 2
# link <- link_urls[1]
# 위에서 node1을 선택할 때:
## - ".icon_check_adopt"로 노드를 식별하고,
## - 그 text가 "지식인채택" 또는 "질문자채택"을 갖는 node만 선택할 수 있다.
## - 또는 아직 ".icon_check_adopt"로 노드만 존재할 수도 있고,
## - 아직 전혀 답변이 없는 질문이 있을 수도 있다.
## - 각 채택 유형을 또다는 변수로 지정하고,
## - "질문자채택" > "지식인채택" > "마지막 답변" > "" 로 kin_list에 담을 수 있다.
## - 이경우 nodes를 식별하기 위한 css selector는 ".c-heading-answer__content-user"를 사용한다.
main_url = "https://tip.daum.net/search?query=파이썬&minIdx=&maxIdx=&action=0&pageNumber="
kin_list = character()
title_list = character()
date_list = character()
for(page_url in 1:10){
number = 1
url = paste(main_url,page_url,sep="")
content = read_html(url)
link_node = html_nodes(content,".box_collect .tit_collect a") # from chrome develop mode
link_node = html_nodes(content,".tit_collect a") # from javascript function
link_urls = html_attr(link_node, "href")
title = html_text(link_node)
title_list = append(title_list, title)
date_node = html_nodes(content,".info_append .txt_time")
date_node = html_nodes(content,".txt_time")
date = html_text(date_node)
date = as.Date(gsub("\\.","-",date))
date_list = append(date_list, date)
for(link in link_urls){
link = paste("https://tip.daum.net",link,sep='')
sub_content = read_html(link)
node1 = html_nodes(sub_content, ".cont_reply .box_collect .txt_collect p")
node1
kin = html_text(node1)
kin = gsub("\n|\t|\u00a0","",kin)
realkin = character()
if(length(kin) != 0){ # 응답이 하나라도 있을 때.
for(i in 1:length(kin)){ # 12줄이니까 12번 돌아감
if(nchar(kin[i]) != 0){ # 빈 공백 줄 제거
realkin = append(realkin, kin[i])
}
}
realkin = paste(realkin, collapse="\n") # realkin : 여러가지 텍스트 collapse: 행 새로 이어질때마다 연결되는 것을 적어줌
} else {
realkin = ""
}
kin_list = append(kin_list, realkin)
print(sprintf("Number of article is %d", number))
number = number + 1
}
}
df = data.frame(date_list, title_list, kin_list)
df = df[order(df$date_list,decreasing = FALSE),]
colnames(df) = c("date","title","kin_reple")
write.csv(df, "daum_tip_파이썬.csv", row.names = F)