【发布时间】:2016-08-26 21:08:30
【问题描述】:
我正在尝试使用 R 下载在http://weather.uwyo.edu/cgi-bin/sounding?region=naconf&TYPE=TEXT%3ALIST&YEAR=2016&MONTH=08&FROM=2612&TO=2612&STNM=71203 找到的数据。据我了解,这是一个列表。我尝试使用 XML 包,但继续收到错误“(函数(类,fdef,mtable)中的错误:无法找到签名“NULL”的函数“readHTMLList”的继承方法。我使用 readHTMLTable() 时也会出现同样的错误。这就是我一直在使用该函数的方式:
url = "http://weather.uwyo.edu/cgi-bin/sounding?region=naconf&TYPE=TEXT%3ALIST&YEAR=2016&MONTH=08&FROM=2612&TO=2612&STNM=71203"
mydata = read.HTMLTable(url, which = 11, trim = T)
我还尝试在功能选项中包含header = T、stringsAsFactors = F 和readLines(url),但均无济于事。如果我只需要一张表,我会手动下载它,但我需要大量的数据。我的想法是在我让初始函数工作后,遍历 url 中的 FROM= 和 TO= 以访问探测数据的不同日期和时间。任何帮助都会很棒。
【问题讨论】:
-
它不是 HTML 表格 - 检查页面源代码,您会看到数据只是在
标记中格式化的纯文本。您需要获取
标记的内容并将其解析为固定宽度格式的文本。你试过 rvest 包吗?
-
不是万无一失的
rl <- readLines(url); pre <- grep('^</?PRE>', rl); read.table(text = rl[(pre[1] + 1):(pre[2] - 1)][-c(1, 3:4)], header = TRUE, fill = TRUE)