迭代 rvest scrape 函数给出:“open.connection(x, "rb") 中出现错误:已达到超时”

2023-12-14

我正在刮这个网站使用“rvest”包。当我迭代函数太多次时,我收到“open.connection(x, "rb") 中的错误:已达到超时”。我搜索过类似的问题,但答案似乎进入了死胡同。我怀疑它是服务器端的,并且该网站对我可以访问该页面的次数有内置限制。如何研究这个假设?

代码:我有指向底层网页的链接,并希望使用从关联网页中提取的信息构建一个数据框架。我稍微简化了我的抓取功能,因为使用更简单的功能仍然会出现问题:

scrape_test = function(link) {

  slit <-  str_split(link, "/") %>%
    unlist()
  id <- slit[5]
  sem <- slit[6]

  name <- link %>% 
    read_html(encoding = "UTF-8") %>%
    html_nodes("h2") %>%
    html_text() %>%
    str_replace_all("\r\n", "") %>%
    str_trim()

  return(data.frame(id, sem, name))
}

我使用 purrr-package map_df() 来迭代该函数:

test.data = links %>%
  map_df(scrape_test)

现在,如果我仅使用 50 个链接迭代该函数,我不会收到任何错误。但是当我增加链接数量时,我遇到了前面提到的错误。此外,我收到以下警告:

  • “在bind_rows_(x, .id)中:不相等的因子级别:强制转换为字符”
  • “关闭未使用的连接4(link)"

EDIT:以下创建链接对象的代码可用于重现我的结果:

links <- c(rep("http://karakterstatistik.stads.ku.dk/Histogram/NMAK13032E/Winter-2013/B2", 100))

对于大型抓取任务,我通常会执行 for 循环,这有助于排除故障。为您的输出创建一个空列表:

d <- vector("list", length(links))

这里我做了一个 for 循环,tryCatch块,以便如果输出有错误,我们会等待几秒钟并重试。我们还包括一个counter如果五次尝试后仍然出现错误,请转到下一个链接。此外,我们还有if (!(links[i] %in% names(d)))这样,如果我们必须打破循环,我们可以在重新启动循环时跳过已经抓取的链接。

for (i in seq_along(links)) {
  if (!(links[i] %in% names(d))) {
    cat(paste("Doing", links[i], "..."))
    ok <- FALSE
    counter <- 0
    while (ok == FALSE & counter <= 5) {
      counter <- counter + 1
      out <- tryCatch({                  
                  scrape_test(links[i])
                },
                error = function(e) {
                  Sys.sleep(2)
                  e
                }
              )
      if ("error" %in% class(out)) {
        cat(".")
      } else {
        ok <- TRUE
        cat(" Done.")
      }
    }
    cat("\n")
    d[[i]] <- out
    names(d)[i] <- links[i]
  }
} 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代 rvest scrape 函数给出:“open.connection(x, "rb") 中出现错误:已达到超时” 的相关文章

  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • ggplot散点图中的图例问题

    我想使用 ggplot 创建显示方法比较数据的散点图 绘图应包含原始数据 理想线和带误差的拟合线 图例应显示理想线和拟合线的线型 线宽 线颜色 我可以获得大部分我想要的东西 但是图例存在以下问题 图例显示每种线型有 2 条线 为什么 如何解
  • 为什么 geom_boxplot 比基本箱线图识别更多异常值?

    这是一个可重复的示例 与基本箱线图相比 最后一个治疗组又发现了一个异常值 dta lt structure list Treatment c A A A A A A A A A A A A A A A A B B B B B B B B B
  • R 中的 Websocket

    我设法在 R 中建立到 Mtgox websocket 的连接 规格如下 url https socketio mtgox com mtgox Currency USD https socketio mtgox com mtgox Curr
  • 如何将 ggrough 图表另存为 .png

    说我正在使用R包裹ggrough https xvrdm github io ggrough https xvrdm github io ggrough 我有这个代码 取自该网页 library ggplot2 library ggroug
  • 如何从shiny中将数据下载到多张纸上?

    我们如何将数据从 Shiny 下载到多个工作表并命名每个工作表 例如下面 ginberg将mtcars数据保存在sheet1中 我们可以将头部 mtcars 保存在sheet2中吗 另外 我们可以对这些工作表进行不同的命名吗 例如sheet
  • 为什么 \K 似乎消耗了基本 R 的 gsub 中的一个字符

    这是一个示例字符串 bcadefgh 我希望我能匹配除了 cad 具有以下模式 wa w K w 如果我想替换所有不是的东西 cad 我可以用gsub 像这样gsub wa w K w bcadefgh perl TRUE 但是这输出 ca
  • PHP 计算字符串出现次数的最快方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 字符串 S 的前缀是 S 的任何前导连续部分 例如 c 和 cod 是字符串 codility 的前缀 为简单起见 我们要求前缀非空 字符串 S
  • 如何在我自己的网络服务器上导出并托管 ggvis 图表?

    据我了解 ggvis 运行在闪亮的之上 但我不知道如何在没有 R shiny 的情况下导出在网络服务器上运行单个 ggvis 图表所需的所有文件 这对于交互式绘图来说是不可能的 因为 每个交互式 ggvis 图都必须连接到正在运行的 R 会
  • r 谷歌搜索结果计数检索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 用关键字 健康医院 搜索谷歌会返回大约 1 150 000 000 个结果 如何在 R 中以编程方式获得此计数 我见过这个lin ht
  • R - Quantstart:多种股票的测试策略

    我正在使用一些指标构建基本交易策略 我的问题是我希望它在多个股票上运行 而不必指定我想要测试的每个单独的股票 目前我可以使用向量一次获取多个符号 如下所示 Get Shares from Yahoo Finance Stocks lt AS
  • 使用许多特殊字符将 R 连接到 HANA 数据库时出现问题

    我在将 HANA 数据读入 R 时遇到问题 我已通过以下方式建立了连接 ch lt odbcConnect HANA uid USER pwd PW 并确认我已通过以下方式连接 sqlTables ch 这会调出我的表格列表 对我想要拉取的
  • 如何在 Swift 中使用函数数组

    我已经阅读了我可以在这里找到的所有关于函数数组的帖子 太棒了 你能做到 我估计 但没有一篇文章实际上展示了如何使用它们 至少不是我想要做的 这就是我想要的 它们都可以采用相同的参数 但这不是必需的 这篇文章很接近 将允许我循环执行每个函数
  • 迭代字符串 R 的字符

    有人可以解释一下为什么这不会在 R 中单独打印所有数字 numberstring lt 0123456789 for number in numberstring print number 字符串不就是字符数组吗 在 R 中该怎么做 In
  • R 包与 Rcpp 的链接错误:“未定义符号:LAPACKE_dgels”

    我正在创建一个 R 包 lapacker 以使用 R API 头文件 R ext Lapack h 为 R 提供和使用的内部 LAPACK 库 仅具有双精度和双复数 提供 C 接口 源代码 https github com ypan1988
  • 在 Ubuntu Lucid 中从二进制安装 R 包

    我已经使用以下命令在 Ubuntu Lucid 中安装了 R sudo aptitude 安装 r base 当我尝试 install packages 时 它似乎会下载源代码 然后花费很长时间来编译它 我怎样才能像我在 Windows 上

随机推荐

  • 如何自定义 HTML5 日期选择器

    我试图了解如何以特定方式自定义 HTML5 日期选择器 特别是格式类似于 日历图标 8 月 31 日 星期二右侧插入符号将打开日期选择器 经过一些初步搜索后 我找到了这些用于自定义日期输入文本框的伪元素 webkit datetime ed
  • c++ - FreeImage+OpenCV - 16 位图像扭曲

    我正在尝试加载图像 因为我必须对其应用算法 如果我加载每通道 8 位图像 则没有问题 但如果我加载 16bpc 图像 则会 毁掉 不幸的是 由于我没有足够的声誉 我无法上传图像 这些是它们的链接 源和 8bpc 处理结果 http post
  • 了解为什么 onCreateOptionsMenu 不显示菜单

    我正在阅读 Android For Dummies 一个例子使用了 onCreateOptionsMenu 我添加了一条日志消息 Override public boolean onCreateOptionsMenu Menu menu s
  • 字典递归比较程序

    我创建了一个程序来比较两个 python 字典并输出两者的差异 它适用于深度为 2 或更小的字典 我应该怎么做才能处理更深度的字典以及嵌套的字典 我遇到的另一个问题是 当我通过 get json 函数传递 json 数组时 它会作为列表返回
  • 使用 DirectShow 过滤器进行编码

    我正在努力将原始图像编码为 Windows 上的 avi 文件 可能使用 directshow 过滤器 使用的编解码器类型将由用户选择 我已经使用 Windows 视频 VFW 做了类似的事情 这很漂亮 因为它提供了简单的 api 来压缩数
  • 使用子进程时如何在 Python 中复制 tee 行为?

    我正在寻找一个 Python 解决方案 它允许我将命令的输出保存在文件中 而不将其从控制台隐藏 仅供参考 我问的是tee 作为 Unix 命令行实用程序 而不是 Python intertools 模块中的同名函数 Details Pyth
  • 展示 SkScene 中的另一个视图控制器

    我正在尝试展示另一个viewController来自我的 SkScene 这是我的主要viewController tuViewController Code void openTweetSheet FacebookLikeViewDemo
  • 打开拨号盘以拨打用户想要的号码

    我想在用户单击通话按钮时打开拨号盘 然后用户输入电话号码并拨打它 我知道我们可以这样打电话 UIApplication sharedApplication openURL NSURL URLWithString telprompt 2135
  • 如何在 Markdown pandoc 中打破长头线?

    在这个降价代码中 This a very long line header which was written in markdown 我想将长行分成两行 但保持标题的样式 这是错误的意图 This a very long line hea
  • 如何在 Ruby 中使用 mechanize 填写登录表单?

    下面是我希望用机械化填写的表格 已经尝试过常用的模型 例如 使用 Ruby 和 Mechanize 填写远程登录表单之谜 但没有成功
  • 如何使用链接按钮打开新选项卡?

    我正在使用一个linkbutton在一个gridview控件 我想将数据打开到新选项卡中 我尝试设置target blank 但它不起作用 我尝试过这样做 这是我的源代码
  • WCF 用户名身份验证:我可以在自定义 ServiceAuthorizationManager 中获取用户名吗?

    我有一个使用自定义的 WCF 服务ServiceAuthorizationManager 自定义身份验证管理器已设置为处理 Windows 和表单身份验证 但是 如果我连接的客户端设置为UserNameauth 我似乎无法在任何地方找到用户
  • 在一个类中使用带有成员函数的通用 std::function 对象

    对于一个类 我想将一些指向同一类的成员函数的函数指针存储在一个类中map储存std function对象 但我一开始就失败了这段代码 include
  • Clojure 生产者 消费者

    我正在学习 clojure 并通过生产者消费者示例尝试其并发性和有效性 这样做后 不得不使用 ref 和 deref 以及观察和取消观察感觉非常尴尬 我尝试检查其他代码片段 但是除了使用 Java Condition await 和 sig
  • 单击表格,更新行,将鼠标悬停在行上,更新表格

    我是 D3 的新手 但到目前为止我很喜欢它 但我知道我的解决方案缺乏 优雅 我试图有 2 个控件 一个表格和一个显示表格单元格表示的数据的图表 如果单击表格上的单元格 则相关行应突出显示 如果将鼠标悬停在一行上 关联的表格单元格将改变颜色
  • 如何忽略或修复重复的类警告?

    我正在尝试使用Qulice代码质量控制工具 当我跑步时qulice check在我的项目中 我收到以下错误 WARNING Found duplicate and different classes in junit junit 4 8 2
  • 如何获取对象的实例名称

    我使用下面的代码编写代码来查询指定时间间隔内的Web方法 现在在 this Poll 函数中我必须做 this tmo setTimeout this strInstanceName Poll this iInterval 代替 this
  • 通过索引实现“constexpr for”

    for int i 0 i lt 5 i std get i tuple 这不会编译 因为i不是编译时间常数 在如何迭代 std tuple 的元素 和其他帖子我看到递归的答案 或使用std apply 但那些失去了索引控制 我也不想仅仅限
  • Netsuite Advanced PDF/HTML 代码 ifelse 语句

    我需要一些帮助 以正确的方式格式化此代码 以便在 Netsuite 中实现项目 td lt if item units null gt Units lt else gt tranline units td 我希望 PDF 表单显示测量单位
  • 迭代 rvest scrape 函数给出:“open.connection(x, "rb") 中出现错误:已达到超时”

    我正在刮这个网站使用 rvest 包 当我迭代函数太多次时 我收到 open connection x rb 中的错误 已达到超时 我搜索过类似的问题 但答案似乎进入了死胡同 我怀疑它是服务器端的 并且该网站对我可以访问该页面的次数有内置限