如何通过股票网页进行网络抓取

问题描述 投票:0回答:0

我尝试为按股票收集股票投资信息编写代码。 第一步是创建一个文件夹来存储股票投资信息(如果尚不存在)。第二步是阅读网页并将其保存到文件中。最后阶段是读取保存的文件并创建数据框。 具体来说,我想检索与图像在同一页面上的红线内的信息作为数据框,并将其保存为 CSV 文件。我想从kospi 200指数中收集除ETNs、ETFs、REITs等纯股票的投资信息。 但是代码没有激活。

library(rvest)
library(stringr)

url <- "https://finance.naver.com/sise/sise_market_sum.nhn"
html <- read_html(url, encoding="euc-kr")

tables <- html %>%
  html_nodes("table")

hrefs <- tables[2] %>%
  html_nodes("a") %>%
  html_attr("href")

hrefs 

codes <- substr(hrefs, nchar(hrefs)-5, nchar(hrefs))

codes 

code_list <- codes[c(TRUE, FALSE)]

get_investment_info <- function(url) {
  webpage <- read_html(url)
  
  # 투자정보 탭 클릭
  invest_tab <- webpage %>%
    html_nodes("a[href*=tab_invest]") %>%
    html_attr("onclick") %>%
    str_extract("(?<=showArea\\('tab_invest',)[^\\)]+(?=\\))") %>%
    str_replace_all("'","") %>%
    str_replace_all(" ","") %>%
    str_split(",")
  
  # 필요한 정보 스크랩핑
  invest_info <- webpage %>%
    html_node(paste0("#", invest_tab[[1]][1])) %>%
    html_nodes(".aside_invest_table > tbody > tr") %>%
    html_text() %>%
    str_remove_all("[\r\n\t]") %>%
    str_remove_all(",") %>%
    str_trim() %>%
    str_split(" ") %>%
    unlist() %>%
    matrix(ncol = 2, byrow = TRUE) %>%
    as.data.frame() %>%
    setNames(c("항목", "값")) %>%
    filter(항목 %in% c("시가총액", "시가총액순위", "상장주식수", "액면가", "매매단위", "외국인한도주식수",
                        "외국인한도주식수(A)", "외국인보유주식수(B)", "외국인소진율(B/A)", "투자의견", "목표주가",
                        "52주최고", "52주최저", "PER", "EPS", "추정PER", "추정EPS", "PBR", "BPS",
                        "배당수익률", "동일업종PER", "동일업종등락률"))
  
  return(invest_info)
}

url <- 0
invest_info <- 0

for (i in length(code_list)){
 url[i]<- paste0("https://finance.naver.com/item/main.naver?code=", code_list[i])
 html <- read_html(url, encoding = "euc-kr")
 invest_info[i] <- get_investment_info(url[i])
}     

write.csv(invest_info, "Korean_investment_info.csv", row.names = FALSE)

想好好改装一下。然后激活好。 综上所述,完成按股票抓取股票投资信息的R代码,抓取结果保存在CSV文件中。

r dataframe web-scraping export-to-csv stock
© www.soinside.com 2019 - 2024. All rights reserved.