Fr.*_*Fr. 6 curl r web-scraping
我试图从法国下议院网站上的两页中删除所有账单.这些页面涵盖了2002 - 2012年,每个代表不到1,000个账单.
为此,我getURL通过这个循环:
b <- "http://www.assemblee-nationale.fr" # base
l <- c("12","13") # legislature id
lapply(l, FUN = function(x) {
print(data <- paste(b, x, "documents/index-dossier.asp", sep = "/"))
# scrape
data <- getURL(data); data <- readLines(tc <- textConnection(data)); close(tc)
data <- unlist(str_extract_all(data, "dossiers/[[:alnum:]_-]+.asp"))
data <- paste(b, x, data, sep = "/")
data <- getURL(data)
write.table(data,file=n <- paste("raw_an",x,".txt",sep="")); str(n)
})
Run Code Online (Sandbox Code Playgroud)
有没有办法优化getURL()这里的功能?我似乎无法通过传递async=TRUE选项使用并发下载,这每次都给我同样的错误:
Error in function (type, msg, asError = TRUE) :
Failed to connect to 0.0.0.12: No route to host
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢!
尝试 mclapply {multicore} 而不是 lapply。
“mclapply 是 lapply 的并行化版本,它返回一个与 X 长度相同的列表,其中每个元素是将 FUN 应用于 X 的相应元素的结果。” (http://www.rforge.net/doc/packages/multicore/mclapply.html)
如果这不起作用,您可以使用XML包获得更好的性能。像 xmlTreeParse 这样的函数使用异步调用。
“请注意,xmlTreeParse 确实允许混合处理方式,允许我们在树中的节点转换为 R 对象时将处理程序应用于它们。这是一种事件驱动或异步调用的方式。” (http://www.inside-r.org/packages/cran/XML/docs/xmlEventParse)
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |