인프런 커뮤니티 질문&답변

일신우일신님의 프로필 이미지
일신우일신

작성한 질문수

[R] KOSPI/KOSDAQ 전 종목 데이터 수집 및 관리

종목 코드 전처리 작업

library(htmltab)는 실행시키면 실행이 안됩니다.

작성

·

163

·

수정됨

0

어제 R studio를 여기서 하는데로 최신버전으로 깔았고,

여기서 하라는 데로 그대로 설치를 했습니다.

그리고 여기 강의를 들으면서 따라하던 중..

library(htmltab) 이것을 실행시키면 아래와 같은 문구가 뜨네요..

library(htmltab)에서 다음과 같은 에러가 발생했습니다:‘htmltab’이라고 불리는 패키지가 없습니다.

잠시

install.packages("htmltab")을 실행하지 않아서 그런가 봤더니. 그것도 아니어서...

 

그래서 더 낮은 32bit버전으로 깔고 해봤는데요... 똑 같습니다.. 

그래서 인터넷에 검색해보니..

Package ‘htmltab’ was removed from the CRAN repository.

이렇게 나오네요..

여기 나와 있는 밑에 답변이 있길래 기쁜마음에 복사해서 붙여놓고 하나하나 실행시켜봤습니다..

setwd("D:\\stock")

#library(htmltab)

url<-"http://finance.naver.com/item/sise_day.nhn?code=005380&page=1" # 종목 A

url<-"http://finance.naver.com/item/sise_day.nhn?code=005930&page=1" # 종목B

#install.packages("httr")

library(httr)

referer <- add_headers(Referer = "http://finance.naver.com/item/sise_day.nhn?code=005380&page=11") #검색해서 들어간 것처럼 위장하기위해 header를 붙여준다

tmp <- GET(url, referer) # GET함수를 통해 해당 서버에 통신을 함 뒤에 referer인자가 위장술

ta<-read_html(tmp)%>% html_nodes(xpath = '/html/body/table[1]') %>% html_table()

ta2<-(ta[[1]])

ta2[-c(1,7,8,9,15),]

code_data <- read.csv("data.csv",sep="\t")

? read.csv

head(code_data)

code <- as.character(code_data[,1])

code_name <- as.character(code_data[,2])

re_code <- as.character(sapply(code,function(x){

nc<- 6-nchar(x)

paste0(c(rep(0,nc),x),collapse = "")

}))

k <- 1

i <- 1

for(k in 1:length(re_code)){

final_data<-NULL

for(i in 1:10){

url <- paste0("https://finance.naver.com/item/sise_day.nhn?code=",re_code[k],"&page=",i)

b <- htmltab(url,encoding="UTF-8")

b

final_data < -rbind(final_data,b)

cat("\n",i)

}

head(final_data)

tail(final_data)

dim(final_data)

..........

결과는 몇줄 가지도 못하고 바로

add_headers(Referer = "https://finance.naver.com/item/main.naver?code=005380")에서 다음과 같은 에러가 발생했습니다:
  함수 "add_headers"를 찾을 수 없습니다

로 나옵니다..

 

이 문제가 반드시 해결이 되야 밑에 코딩한게 전부 의미가 있을 것 같습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

일신우일신님, htmltab 패키지가 CRAN에서 제거되어 직접 설치가 안되는 문제에 봉착하셨군요. htmltab 함수 대신 다른 방식으로 웹 페이지의 테이블 데이터를 수집해야 할 것 같습니다. 다행히 httr 패키지로 HTTP 요청을 보낼 수 있고, rvest 패키지를 이용해 HTML 문서를 파싱할 수 있습니다.

add_headers 함수는 httr 패키지에 포함된 함수이므로, 해당 패키지를 불러온 후 사용해야 합니다. library(httr)를 실행하셔야 하는데, 혹시 실행하지 않으셔서 함수를 찾을 수 없는 상황이 발생하지 않았는지 확인해 보세요.

다음은 httrrvest를 사용하여 네이버 금융에서 데이터를 수집하는 간략한 예시입니다:

library(httr)
library(rvest)

url <- "https://finance.naver.com/item/sise_day.nhn?code=005380&page=1"
referer <- add_headers(Referer = "https://finance.naver.com/item/sise_day.nhn?code=005380&page=11")
response <- GET(url, referer)
content <- read_html(response)

# XPath를 사용하여 테이블을 찾고 테이블 데이터를 추출합니다.
table <- content %>% html_nodes(xpath = '/html/body/table[1]') %>% html_table()

# 데이터 프레임 결과를 확인합니다.
stock_data <- table[[1]]
print(stock_data)

만약 library(httr) 실행 이후에도 여전히 같은 오류가 발생한다면 RStudio를 재시작하신 후 다시 시도해 보세요. 또한, 패키지 설치 상태를 확인하려면 installed.packages()를 실행하여 현재 설치된 패키지 목록을 확인하실 수 있습니다.

일신우일신님의 프로필 이미지
일신우일신

작성한 질문수

질문하기