R代码:网页抓取

时间:2012-01-21 12:30:57

标签: r

我正在尝试使用R。

对OECD表进行webscrape
library(XML)
OECD <- readHTMLTable('http://stats.oecd.org/Index.aspx?DataSetCode=MEI_CLI')
OECD<- data.frame(rawOECD[[1]])

我已经设法使用上面的代码获取基本表,但我无法将其变为可呈现的形式。

我很感激你的帮助。

亲切的问候,

亚当

2 个答案:

答案 0 :(得分:7)

这个怎么样?

library(XML)
OECD <- readHTMLTable('http://stats.oecd.org/Index.aspx?DataSetCode=MEI_CLI',stringsAsFactors = FALSE)

n.rows <- unlist(lapply(OECD, function(t) dim(t)[1]))
out <-as.data.frame(OECD[[which.max(n.rows)]])
colnames(out) <-c("Date",out[7,-ncol(out)]) #add row names
out <-out[-(1:9),]  #clean up

答案 1 :(得分:0)

使用HTML的替代方法,以便对&#34;视图&#34;进行抽象。 (这可能会改变,至少根据你的数据查询),也许从R参数化你的数据查询,是考虑SDECX标准交换格式,由OECD统计门户支持。如果单击导出,请选择&#34; SDMX&#34;,然后复制SDMX查询Web请求。

然后,在R中,您可以轻松使用rsdmx包:

require(rsdmx)
sdmx <- readSDMX("http://stats.oecd.org/restsdmx/sdmx.ashx/GetData/MEI_CLI/LOLITOAA+LOLITONO+LOLITOTR_STSA+LOLITOTR_GYSA+BSCICP03+CSCICP03+LORSGPRT+LORSGPNO+LORSGPTD+LORSGPOR_IXOBSA.AUS+AUT+BEL+CAN+CHL+CZE+DNK+EST+FIN+FRA+DEU+GRC+HUN+IRL+ISR+ITA+JPN+KOR+LUX+MEX+NLD+NZL+NOR+POL+PRT+SVK+SVN+ESP+SWE+CHE+TUR+GBR+USA+EA19+G4E+G-7+NAFTA+OECDE+OECD+ONM+A5M+BRA+CHN+IND+IDN+RUS+ZAF.M/all?startTime=2013-09&endTime=2015-08")
df <- as.data.frame(sdmx)

rsdmx现在还提供了一种从知名数据提供者查询数据的方法,OECD也是此列表的一部分。对于此功能,您将需要使用rsdmx版本&gt; = 0.5(现在仅在Github上)。下面是一个例子:

sdmx <- readSDMX(providerId = "OECD", resource = "data", flowRef = "MEI_CLI",
                key = "all", key.mode = "SDMX",
                start = "2013-09", end = "2015-08")
df <- as.data.frame(sdmx)

注意:还可以考虑使用相同的SDMX格式和rsdmx来读取data structure definition(也由OECD提供)等元数据。

希望这有帮助