使用R一次性从多个网页中刮取单个表格

时间:2015-07-26 11:12:57

标签: r web-scraping

我是R编程的新手。 我废弃下面一个网络表的代码有效。

library(XML)
balsht <- "http://www.theedgemarkets.com/my/AA/balance_sheet?0=2593&exchange=KLSE"
balstable <- readHTMLTable(balsht, header=T, which=1,stringsAsFactors=F)
balstable
write.table(balstable, "balsht-2593.txt", row.name=FALSE)

我的问题是我希望一次性获得5个表,只有url中的数字(即2593)不同(url中的其余字符相同),并使用该数字作为文件名的一部分进行写入。 table命令。

例如,假设随机数为0081,0126,3379,6149&amp; 9997。

尝试在此处建议的解决方案 Scraping multiple table out of webpage in R 但得到了这个错误:curl :: curl_fetch_memory(url,handle = handle)出错:   已达到超时

请详细说明如何使用循环或任何可用的行命令来解决它。谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用lapply

tab.nums <- c("0081", "0126", "3379", "6149", "9997")
# construct urls
balsht <- paste0("http://www.theedgemarkets.com/my/AA/balance_sheet?0=", 
    tab.nums, "&exchange=KLSE")
# get list of tables
balstables <- lapply(balsht, 
    function(x) readHTMLTable(x, header=T, which=1,stringsAsFactors=F))
# save each table using relevant number
lapply(seq_along(balsht), 
    function(x) write.table(balstables[[x]], paste0("balsht", tab.nums[x], ".txt"), row.name=FALSE))