使用Yahoo Finance进行网络抓取
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Yahoo Finance进行网络抓取相关的知识,希望对你有一定的参考价值。
自从对Yahoo Finance进行了一些页面调整以来,我已经看到了一些用于webscraping的字符串,并且以下脚本对一个股票行情很好,但是创建了一个循环,对许多股票行情重复,然后将它们绑定为一个大的每行具有相应代码的数据框导致以下消息:
open.connection(x,“ rb”)中的错误:HTTP错误503。
这里是带有循环的脚本-“ tickers”:
library(quantmod)
symbolData2 <- stockSymbols(exchange="NASDAQ")
symbolData3 <- stockSymbols(exchange="NYSE")
complete_symbols <- rbind(symbolData2,symbolData3)
tickers <- paste(complete_symbols$Symbol,sep=',')
stocks <- tickers
for (s in stocks) {
url <- paste0("https://finance.yahoo.com/quote/",s,"/key-statistics?p=", s)
df <- url %>%
read_html() %>%
html_table(header = FALSE) %>%
map_df(bind_cols) %>%
as_tibble()
assign(s, df)
df <- get(s)
df['stock'] <- s
assign(s, df)
}
stockdata <- do.call(rbind, stockdatalist)
stockdata <- stockdata[, c(ncol(stockdata), 1:ncol(stockdata)-1)]
如果某个特定的代码正在停止此操作,则很难查明是哪个代码(我希望脚本能够跳过它)。任何帮助完成此工作的人都非常感谢。
答案
我重写了答案,仅获得基本数据。首先,我将您的抓取请求放入一个函数中,而不是循环。接下来,我基于purrr的possibly
函数松散地编写了一个错误捕获器函数。这样就可以返回一个函数而不是默认值。然后,您可以使用map_df
遍历所有股票代码。只要有错误,数据将为NA
,但将显示代码,并在错误列中填写。
以上是关于使用Yahoo Finance进行网络抓取的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的代码中使用自定义 CSV 而不是 Yahoo Finance 数据?
使用 BeautifulSoup 搜索 Yahoo Finance
Yahoo Finance API 股票/股票代码查找只允许完全匹配