通常我从站点获取表数据没有任何问题,但这个问题让我陷入了困境。
我尝试过该网站的各种建议: [R: Scraping Site, Incrementing Loop by Date in URL, Saving To CSV [Scraping from aspx website using R [web scraping in R
我尝试过两种方法尝试从网站上获取内容并最终出现错误。
第一种方法:
#####Reading in data
library(RCurl)
library(XML)
library(xts)
#pulling rainfall data csv
direct_rainfall <- read.csv(url(getURL("http://cdec.water.ca.gov /cgi-progs/getMonthlyCSV?station_id=CVT&dur_code=M&sensor_num=2&start_date=1/1/2000&end_date=now")))
以下列错误结束: 函数错误(type,msg,asError = TRUE): 无法连接到cdec.water.ca.gov端口80:超时
第二种方法:
#xml data pull method
require(XML)
url = "http://cdec.water.ca.gov/cgi-progs/getMonthlyCSV?station_id=CVT&dur_code=M&sensor_num=2&start_date=1/1/2000&end_date=now"
doc = htmlParse(url)
哪一端有以下错误: 错误:无法加载外部实体“http://cdec.water.ca.gov/cgi-progs/getMonthlyCSV?station_id=CVT&dur_code=M&sensor_num=2&start_date=1/1/2000&end_date=now”
任何指导都将不胜感激。当我尝试从URL中提取时,我无法弄清楚为什么我什么都没得到。
谢谢!
答案 0 :(得分:2)
如果您查看网站,它是一个格式合理的CSV格式。令人高兴的是,如果您传递read.csv
一个URL,它会自动为您处理连接,所以您真正需要的是:
url <- 'http://cdec.water.ca.gov/cgi-progs/getMonthlyCSV?station_id=CVT&dur_code=M&sensor_num=2&start_date=1/1/2000&end_date=now'
df <- read.csv(url, skip = 3, nrows = 17, na.strings = 'm')
df[1:5,1:10]
## X.station. X.sensor. X.year. X.month. X01 X02 X03 X04 X05 X06
## 1 CVT 2 2000 NA 20.90 19.44 3.74 3.31 5.02 0.85
## 2 CVT 2 2001 NA 7.23 9.53 3.86 7.47 0.00 0.15
## 3 CVT 2 2002 NA 3.60 4.43 8.71 2.76 2.78 0.00
## 4 CVT 2 2003 NA 1.71 4.34 4.45 13.45 2.95 0.00
## 5 CVT 2 2004 NA 3.41 10.57 1.80 0.87 0.90 0.00