创建函数以避免 R for 循环中的 url 错误

Create function to avoid url error in R for loop

我正在遍历一个充满 urls 的 .csv 来抓取网站(授权抓取)。

我正在使用 trycatch 函数来尝试避免 for 循环中断。 但我注意到它停止了一些 url 秒(使用 download.file)。

所以我现在使用的是 « 这是有效的 url 吗? » 取自 post 的函数: [

url_works <- function(url){
tryCatch(
    identical(status_code(HEAD(url)),200L), 
    error = function(e){
        FALSE
    })
}

但即使使用此函数,并且仅当函数的结果为 TRUE 时才循环,有时我的循环会在某些 url 处中断,并且出现以下错误:

> HTTP status was '500 Internal Server Error'

我想了解这个错误,所以我在 URL 函数中添加了这个案例以忽略这种 url 类型再次出现的情况。

有什么想法吗? 谢谢!

你的tryCatch语法有误,我也改了错误信息打印错误:

通用的 tryCatch 看起来像:

tryCatch({
    operation-you-want-to-try
   }, error = function(e) do-this-on-error
)

因此对于您的代码:

url_works <- function(url){
    tryCatch({
        s1 <- status_code(HEAD(url))
        }, error = function(e) print(paste0(url, " ", as.character(e)))
    )
    identical(s1, 200L)
}