-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathREPORT.R
113 lines (83 loc) · 3.03 KB
/
REPORT.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#### 네이버 리포트 다운로드
#### 네이버 증권 사이트에서 크롤링을 통해 오늘 날짜의 리포트를 자동적으로 다운합니다
library(pacman)
p_load(
rvest,
dplyr
)
url = c("https://finance.naver.com/research/industry_list.naver",
"https://finance.naver.com/research/economy_list.naver",
"https://finance.naver.com/research/debenture_list.naver",
"https://finance.naver.com/research/invest_list.naver",
"https://finance.naver.com/research/market_info_list.naver")
name = c("INDUSTRY", "ECONOMICS", "BONDS","INVEST","MARKETINFO")
date = case_when(
weekdays(Sys.Date()) %in% c("Saturday","토요일") ~ (Sys.Date()-1) %>% format("%y.%m.%d"),
weekdays(Sys.Date()) %in% c("Sunday","일요일") ~ (Sys.Date()-1) %>% format("%y.%m.%d"),
TRUE ~ (Sys.Date()) %>% format("%y.%m.%d")
)
# REPORT 디렉토리 생성
report_dir = "./REPORT" #### edit your path.
if (!dir.exists(report_dir)) {
dir.create(report_dir)
}
# URL을 순차적으로 처리
for (i in 1:length(url)) {
main = url[i] %>%
read_html(encoding = "EUC-KR") %>%
html_table(fill = TRUE) %>%
.[[1]] %>%
filter(조회수 != "") %>%
filter(작성일 == date)
links = url[i] %>%
read_html(encoding = "EUC-KR") %>%
html_elements('a') %>%
html_attr("href") %>%
.[grepl("\\.pdf$", ., ignore.case = TRUE)] %>%
.[1:nrow(main)]
# 'INDUSTRY'인 경우
if (name[i] == "INDUSTRY") {
category_folder = file.path(report_dir, paste0(date, "_", name[i]))
if (!dir.exists(category_folder)) {
dir.create(category_folder)
}
main = main %>%
mutate(link = links) %>%
group_by(분류) %>%
arrange(분류)
# 분류별 폴더 생성 및 PDF 다운로드
for (j in 1:length(unique(main$분류))) {
category = unique(main$분류)[j]
category_links = main %>%
filter(분류 == category) %>%
pull(link)
# 'INDUSTRY' 폴더 안에 분류별 폴더 생성
category_folder_path = file.path(category_folder, paste0(date, "_", name[i], "_", category))
if (!dir.exists(category_folder_path)) {
dir.create(category_folder_path)
}
# PDF 다운로드
for (link in category_links) {
pdf_name = file.path(category_folder_path, basename(link))
download.file(link, pdf_name, mode = "wb")
}
}
# 'ECONOMICS'와 'BONDS'인 경우
} else {
category_folder = file.path(report_dir, paste0(date, "_", name[i]))
if (!dir.exists(category_folder)) {
dir.create(category_folder)
}
main = main %>%
mutate(link = links)
# PDF 다운로드
for (link in main$link) {
pdf_name = file.path(category_folder, basename(link))
download.file(link, pdf_name, mode = "wb")
}
}
}
##### EXAMPLE
#### TERMINAL :: %Rscript "your path where saved REPORT.R"" /REPORT.R
## %Rscript ./REPORT.R
## 터미널을 열고 Rscript를 기입한 후 한칸 띄우고 REPORT.R을 드래그 하셔도 됩니다.