在R中的https链接上使用read.csv时为“未经授权”

时间:2019-05-25 03:06:51

标签: r web-scraping

如果直接单击.csv文件,我有一个链接,该链接会指向该文件,但是当我尝试在R中读取该文件时,输出将显示未经授权。

请参见下面的代码,我俩都想从链接中读取一个.csv文件,第一个文件工作正常,但是在第二个文件中,输出仅显示“未经授权;无效的cookie等”。尽管这是公共链接。

library(readr)
library(RCurl)
download <- getURL("https://data.kingcounty.gov/api/views/yaai-7frk/rows.csv?accessType=DOWNLOAD")
data <- read.csv (text = download)
# Below doesn't work
download <- getURL("https://query1.finance.yahoo.com/v7/finance/download/^IXIC?period1=1556161210&period2=1558753210&interval=1d&events=history&crumb=dQjP5bTJfZn")
data <- read.csv (text = download)

我想知道是什么原因引起的?该网站是否有针对非浏览器访问的保护措施?我是否需要在代码中添加一些内容?

1 个答案:

答案 0 :(得分:2)

一种适用于R中一种形式的网页抓取的技术可能不适用于其他类型的网站。从金融网站访问数据就是一个很好的例子。在这里,了解针对特定问题的最佳R包非常重要。

一个人可以使用quantmod包来访问Yahoo Finance中的数据。使用OP中的股票行情自动收录器,这是如何使用quantmod访问纳斯达克综合股票指数2018年数据的示例。

library(quantmod)
from.dat <- as.Date("01/01/18",format="%m/%d/%y")
to.dat <- as.Date("12/31/18",format="%m/%d/%y")
# access 2018 data for the Nasdaq Composite Index 
getSymbols("^IXIC",from=from.dat,to=to.dat,src="yahoo")
head(IXIC)

...以及结果:

> head(IXIC)
           IXIC.Open IXIC.High IXIC.Low IXIC.Close IXIC.Volume IXIC.Adjusted
2018-01-02   6937.65   7006.91  6924.08    7006.90  1914930000       7006.90
2018-01-03   7017.07   7069.15  7016.70    7065.53  2166780000       7065.53
2018-01-04   7089.50   7098.05  7072.38    7077.91  2098890000       7077.91
2018-01-05   7105.74   7137.04  7097.08    7136.56  2020900000       7136.56
2018-01-08   7135.38   7161.35  7124.09    7157.39  2051430000       7157.39
2018-01-09   7174.19   7181.14  7148.30    7163.58  2107300000       7163.58
> 

请注意,quantmod不需要身份验证凭据或cookie即可访问Yahoo Finance中的数据。

获取股票代码列表

在回应对我的回答的评论时,以下代码将允许您使用apply()函数处理股票行情清单。

tickers <- c("^IXIC","GOOG","IBM")
# get a list of symbols
tickerList <- lapply(tickers,function(x){
     message(paste("getting symbol:",x))
     aName <- getSymbols(x,from=from.dat,to=to.dat,src="yahoo")
     assign(aName,get(aName),envir = .GlobalEnv) # assign to global env
     aName
})

lapply()完成后,您可以在RStudio环境查看器中观察xts数据结构,如以下屏幕截图所示。

enter image description here