在 R 中使用 download.file 下载时跳过错误文件

2024-03-20

我有大量 pdf 文件的链接,我想在 for 循环中使用 download.file 下载这些文件。我的解决方案工作正常,但在遇到错误时停止(许多文件不起作用)。我想在 download.file 函数中添加一个功能,告诉 R 在下载产生错误时跳过文件,并打印一条消息,其中包含遇到错误的页面名称。

我发现 tryCatch 在这种情况下可能是一个很好的解决方案,但我不完全确定将其放置在哪里(我尝试了多种方法,但都不起作用)。

这是我的代码:

for (i in length(files) {

# Reads the html links 
  html <- read_html(files[i])
  reads_name <- html_nodes(html, 'h1') 
  name <- trimws(html_text(reads_name) )

# Extracts the pdf. link from all links that the webpage contains 
  webpagelinks <- html_attr(html_nodes(html, "a"), "href")
  extract_pdf_link <- webpagelinks[grepl("\\pdf", webpagelinks)]

# downloads the pdf file from the pdf link, here is where I get the error 
  download.file(extract_pdf_link, destfile = paste0(name, "_paper.pdf") , 
mode = "wb")

  skip_with_message = simpleError('Did not work out')
  tryCatch(print(name), error = function(e) skip_with_message)

  }

关于如何解决这个问题有什么建议吗?

非常感谢!


Put download.file inside tryCatch。例如

files <- c("http://foo.com/bar.pdf", "http://www.orimi.com/pdf-test.pdf", "http://bar.com/foo.pdf")
oldw <- getOption("warn")
options(warn = -1)
for (file in files) {
    tryCatch(download.file(file, tempfile(), mode = "wb", quiet = FALSE), 
        error = function(e) print(paste(file, 'did not work out')))    
}
options(warn = oldw)

我在开始时使用关闭警告options(warn = -1)抑制无关的警告消息,并在最后恢复之前的设置。这会给你一个类似的输出

# trying URL 'http://foo.com/bar.pdf'
# [1] "http://foo.com/bar.pdf did not work out"
# trying URL 'http://www.orimi.com/pdf-test.pdf'
# Content type 'application/pdf' length 20597 bytes (20 KB)
# ==================================================
# downloaded 20 KB

# trying URL 'http://bar.com/foo.pdf'
# [1] "http://bar.com/foo.pdf did not work out"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中使用 download.file 下载时跳过错误文件 的相关文章

  • R lubridate:当地语言的工作日

    如何获取本地语言的工作日和月份 My code library lubridate data lt c 10 02 2015 11 03 2015 data lubri lt dmy data wday data lubri label T
  • Shiny可以识别用鼠标选择的文本(突出显示的文本)吗?

    我需要用户将文本片段分配给 Shiny 中的类别或 代码 基本上 我希望用户突出显示输出中的文本 在下面的示例中 来自table or text输出 然后按一个按钮 code 并将选定的文本分配给应用程序内的对象 在下面的应用程序中 所选文
  • 将 read.csv 与符号链接文件一起使用

    我正在尝试做什么 我的源文件非常大 我想避免将其复制到其他文件夹中 我决定创建一个指向大文件的符号链接并想使用read csv读取文件 文件夹结构 项目1 数据 源文件 csv 项目2 数据 别名到源文件 csv 什么地方出了错 读取源文件
  • 使用starts_with() 将 NA 替换为 0

    我正在尝试替换我的一组特定列的 NA 值tibble 这些列都以相同的前缀开头 所以我想知道是否有一种简洁的方法来使用starts with 函数从dplyr包可以让我做到这一点 我已经看到了有关 SO 的其他几个问题 但是它们都需要使用特
  • 在 R 中将时间间隔数据扩展为天数

    假设我有如下所示的数据 interval id indiv id role start date end date 1 1 A 2006 05 01 2006 06 16 2 1 B 2006 06 16 2006 10 16 3 1 A
  • 使用管道语法处理模型列表

    我经常喜欢拟合和检查与 R 数据框中的两个变量相关的多个模型 我可以使用如下语法来做到这一点 require tidyverse require broom models lt list hp exp cyl hp cyl map df m
  • R:编写抛硬币的随机采样程序

    假设我们有以下情况 有一枚硬币 如果它正面朝上 那么下一次抛掷正面的概率是 0 6 如果是反面 那么下一次抛掷反面的概率也是 0 6 一个班有100名学生 每个学生随机抛掷硬币几次 Student n 的最后一次抛硬币不会影响 Studen
  • 如何在 R 中只为直方图的一个标签着色?

    我有一个像这样的数据框 CellLines ZEB1 600MPE 2 8186 AU565 2 783 BT20 2 7817 BT474 2 6433 BT483 2 4994 BT549 3 035 CAMA1 2 718 DU447
  • 访问 R 工作区中的数据[重复]

    这个问题在这里已经有答案了 我是自学 R 的 可能有一些非常基本的东西我可能不熟悉 如果是这样我道歉 我正在尝试访问外部来源提供给我的数据 它作为一个工作空间出现 我的流程如下 gt ls 1 2003OHT HR gt attach 20
  • 使用 readHTMLTable 从 https 网页读取表格

    我安装了 R 3 3 1 并使用 RStudio 0 99 903 我正在尝试从以下 URL 将表格读入 R https www fantasypros com nfl rankings consensus cheatsheets php
  • 将不同的 grViz 组合成一个图

    我想结合不同的DiagrammeR绘制成一个图形 生成的图如下例所示 library DiagrammeR pDia lt grViz digraph boxes and circles a graph statement graph ov
  • 美人鱼图:调整图表周围的空白

    我在用 Rstudio 编译的 Rmd 报告中使用了美人鱼图 在 HTML PDF 输出中 图表上方和下方有大量空白 请参见下面的示例 Header Text r library DiagrammeR mermaid graph TD cl
  • curl 无法获取网页内容,为什么?

    我正在使用curl 脚本转到链接并获取其内容以进行进一步操作 以下是链接和curl脚本
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • RStudio 不会通过 rPython 调用加载所有 Python 模块

    我从 Bash 和 RStudio 中运行相同的脚本时出现一些意外行为 请考虑以下事项 我有一个文件夹 rpython 包含两个脚本 test1 R library rPython setwd rpython python load tes
  • 空间数据xyz到矩阵

    我有一个大数据框 100 000 行 其中包含 LON LAT VALUE 我想将其转换为矩阵 EPSG 中的坐标 3035 我使用以下命令尝试了 reshape2 包 acast df lon lat value var value 效果
  • 函数“[<-”将_替换_一个元素,但不会追加_元素_

    我在使用时注意到以下几点 lt 我成功于替换元素但不位于追加向量的一个元素 例子 VarX lt integer VarX 1 lt 11 lt VarX 2 22 VarX 1 11 Expected the value of VarX
  • R 中使用 `UseMethod()` 与 `inherits()` 来确定对象的类

    如果我需要根据 R 对象的类以不同的方式处理它们 我可以使用if and else在单个函数内 foo lt function x if inherits x list Foo the list else if inherits x num
  • 下载进度条在 iOS 企业发行版中没有改变进度

    我正在通过企业分发开发和分发 iPad 应用程序 它们下载并执行良好 因此一切正常 Web 链接 ipa 文件 plist 文件 配置 问题 是 当用户单击链接进行下载时 iPad 中显示下载进度的进度条显示 正在等待 但却是空的并且永远不
  • 使用 selenium 和 python 来提取 javascript 生成的 HTML?萤火虫?

    这里是Python新手 我遇到的是数据收集问题 我在这个网站上 当我用 Firebug 检查我想要的元素时 它显示了包含我需要的信息的源 然而常规源代码 没有 Firebug 不会给我这个信息 这意味着我也无法通过正常的 selenium

随机推荐

  • Windows 控制台中的希腊字母

    我正在用 C 编写一个程序 当我在 cmd exe 中运行它时 我希望在菜单中包含希腊字符 有人说 为了包含希腊字符 你必须使用printf事情是这样的 printf charset IS0 1089 uffe 但他们不确定 有谁知道这是怎
  • 西里尔字母验证

    今天我遇到了一个有趣的缺陷 问题是我在俄罗斯部署了我的 Web 应用程序 并且名称值 在下面的方法中没有返回 true 作为字母数字 很好奇人们如何解决这样的问题 邓肯 private boolean isAlphaNumeric Stri
  • 在长按手势识别器上获取错误的 UIButton 标签

    我知道已经有很多类似的问题被问到 但我已经尝试了所有这些问题 并且在未能解决我的问题时我发布了我的问题 首先我尝试的问题是 1 如何通过longPressGestureRecognizer获取button tag https stackov
  • 将自签名 XAP 部署到 Windows Phone 8

    我们为 WP8 开发了一个应用程序 并希望通过 XAP 文件的下载 URL 在内部分发它 到目前为止我们已采取的步骤 使用Makecert exe生成带有XXX pvk的自签名XXX cer 无密码 使用 Pvk2Pfx exe 创建一个包
  • jquery ajax加载覆盖插件[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 没有 Sql Alchemy 引擎的 Dataframe 到 sql

    我有一个数据框 id value name 1 100 sam 2 766 abc 3 234 qqq 4 435 ppp 5 345 mmm 我想将此表保存到 SQL Server 数据库表 tab1 中 我可以df to sql 但当我
  • 在特定日期使用 CSS 更改背景?

    有谁知道如何在特定日期使用 CSS 自动更改网站的背景 比如情人节 复活节 圣诞节等 为此 您必须使用 PHP 或 JavaScript 等服务器端语言 例如 使用 PHP 您可以使用以下命令访问服务器日期 时间date http php
  • 在另一个线程中运行异步函数

    我正在评估异步 CTP 如何开始在另一个线程池的线程上执行异步函数 static async Task Test Do something await something static void Main string args Is th
  • 如何在 Firebase 文件上设置 Access-Control-Allow-Origin

    我正在尝试设置Access Control Allow Origin to 在某个文件上 这是我的 firebase json 文件 database rules database rules json hosting public pub
  • Xunit 以下构造函数参数没有匹配的夹具数据

    在使用 XUnit for NET 1 0 框架 net46 时 我不断收到此错误 以下构造函数参数没有匹配的夹具数据 我看过这个帖子 收集装置不会注入 https stackoverflow com questions 32319903
  • 使用 mmap 逐行读取文件

    我有一个程序可以逐行读取大小不同的文件 我想使用 mmap 但如何使用它来逐行读取文件 谢谢您的回答 一旦你有mmap 编辑文件后 您可以使该文件可用于合适的流缓冲区 从现有内存中读取数据 然后使用std getline include
  • 如何抑制 Qt Creator 中的警告

    我想知道是否可以在 Qt Creator 中抑制编译器特定的警告 我的 g 4 5 打印 警告 条件表达式中的枚举和非枚举类型 我想摆脱它 因为它非常烦人 乌班图 11 04 x64 g 4 5 QtCreator 2 01 Qt 4 7
  • 库类(来自 Android sdk)取决于程序类(同样,Android sdk)

    我们正在从 Android Gradle 插件 2 3 3 迁移到 Gradle 插件 3 0 1 我们的应用程序由应用程序模块和库模块组成 多个依赖项是可传递的 使用api关键字 但甚至使用implementation没有帮助 全部更改后
  • 如何对包含空元素的对象数组进行排序?

    在我的程序中有一个数组fClasses创建固定长度 7 个对象 每个对象都是一个类FClass其中包含 3Strings an int 和int 这些值是从 txt 文件中读取的 并根据该值添加到数组的特定索引中 int txt 文件中的条
  • 为回归方程选择适当的滞后以及如何解释 VARselect 结果

    我的问题有两个方面 如何为回归方程选择合适的滞后 我有房价的因变量 以及租金 房屋供应 国家股市指数 抵押贷款利率和房屋空置率的自变量 我读了一些书 发现VARselect data lag max 1 or 2 or 3 etc 可以帮助
  • ASP.NET Core应用程序设置生产SSL证书

    我可以在我的开发盒上运行得很好 但不能在产品中运行 我在我的域服务器上安装了 SSL 证书 如何告诉我的 ASP NET Core 应用程序使用哪个证书 我想我需要添加一些东西让它知道 我问是因为目前我得到 无法启动 Kestrel Sys
  • 使用XPATH,如何选择包含特定字符串的任何节点

    假设我有一个如下所示的 XML 文件
  • 如果其他参数为 null,SQL 正确的连接方式

    我有这段代码及其临时表 因此您可以运行它 create table student id int identity 1 1 firstname varchar 50 lastname varchar 50 create table quiz
  • 根据判别器的子集获取判别联合的子集

    打字稿问题 给定一个受歧视的联合类型 interface A discriminator A data string interface B discriminator B data string interface C discrimin
  • 在 R 中使用 download.file 下载时跳过错误文件

    我有大量 pdf 文件的链接 我想在 for 循环中使用 download file 下载这些文件 我的解决方案工作正常 但在遇到错误时停止 许多文件不起作用 我想在 download file 函数中添加一个功能 告诉 R 在下载产生错误