当前位置: 首页 > 知识库问答 >
问题:

跳过错误Open.Connection(x,“RB”)中的错误:HTTP错误404

萧宣
2023-03-14

你好,我刚到这个迷人的r世界,我没有能够跳过不存在的网址,我该如何处理呢?不要标为和错误,谢谢你的帮助。

knitr::opts_chunk$set(echo = TRUE)

library(xml2)
library(rvest)
library(tidyverse)
library(lubridate)

zora_core <- read_html("https://zora.medium.com/the-zora-music-canon-5a29296c6112")

Los_100 <- data.frame(album      = html_nodes(zora_core, "h1:not(#96c9)") %>% 
                                     html_text() %>% 
                                     str_trim(side = "both"),
                      interprete = html_nodes(zora_core, "strong em , p#73e0 strong") %>% 
                                     html_text() %>% 
                                     str_remove_all("^by") %>%
                                     str_extract("[a-zA-Z].+(?=[(])") %>% str_trim(side = "both"),
                      año        = html_nodes(zora_core, "strong em , p#73e0 strong") %>% 
                                     html_text %>% 
                                     str_extract("([[:digit:]]){4}"),
                      liga       = paste0("https://en.wikipedia.org/wiki/",html_nodes(zora_core,                                       "strong em , p#73e0 strong") %>% 
                                     html_text() %>%
                                     str_remove_all("^by") %>%
                                     str_extract("[a-zA-Z].+(?=[(])") %>% str_trim(side = "both") %>% str_replace_all(" ","_")))

carga <- function(url){
  
         perfil_raw <- read_html(url)
         data.frame(interprete = html_node(perfil_raw, "h1#firstHeading") %>% 
                                 html_text() %>% str_trim(side = "both"))
         
}
lista <- Los_100$liga[1:16] # THE url for the position 16 don´t exist how to avoid that

datos_personales <- map_df(lista,carga)


共有1个答案

叶德运
2023-03-14

了解R中的错误处理是很有用的,但是在处理http请求时,它变得非常重要。

在您的情况下,最好将carga包装在trycatch中。这将运行一个表达式,您将该表达式作为第一个参数传递,如果抛出错误,则捕获该表达式并将其传递给trycatch的第二个参数,该参数是一个函数。

如果抛出一个错误,我们需要返回一个包含一列interprete的数据帧,以便map_df可以将其与其他结果绑定在一起:

carga_catch <- function(x)
{
  tryCatch(return(carga(x)),
           error = function(e) return(data.frame(interprete = "**inexistente**")))
}

map_df(lista, carga_catch)
#>               interprete
#> 1        Ella Fitzgerald
#> 2          Sarah Vaughan
#> 3         Billie Holiday
#> 4  Sister Rosetta Tharpe
#> 5             Lena Horne
#> 6        Mahalia Jackson
#> 7          Abbey Lincoln
#> 8             Etta James
#> 9         Leontyne Price
#> 10       Marian Anderson
#> 11      Dinah Washington
#> 12                Odetta
#> 13        Dionne Warwick
#> 14          The Supremes
#> 15           Nina Simone
#> 16       **inexistente**

除了错误处理之外,我认为您的代码对于刚开始R的人来说是非常好的。它在几行代码中实现了很多,而且可读性非常好。干得好!

 类似资料:
  • 问题内容: 我有一段这样的代码 当我输入的查询超过一个词,例如“狗”时,出现以下错误。 谁能指出我做错了什么?提前致谢。 问题答案: “狗”返回400错误的原因是因为您没有转义URL的字符串。 如果您这样做: 会的。 但是,我强烈建议您使用请求,而不要使用urllib / urllib2 / httplib。这要容易得多,它将为您处理所有这一切。 这是与python请求相同的代码:

  • 我正在制作一个面部跟踪视频()。它将返回作业id。我已经设置了所有部分。这里我的问题是,我无法使用从SQS获取消息。甚至也不工作。它给出了以下错误。 https://sqs.us-east-1.amazonaws.com上的列表队列;AWS HTTP错误:客户端错误:导致响应: 此请求的规范字符串应为“POST/…”。。。。。。。 代码如下所示。AWS PHP SDK版本3.64。11 提前感谢!

  • 我已在centos 7上配置了kubernetes主机,并在另一个节点centos 7上配置了kubernetes节点 在kube Master上运行的服务: Kube-Controller-Manager kube-apiserver Kube-Scheduler ETCD 弗兰菲尔德 在kube节点上运行的服务: null 我不知道这个错误意味着什么,以及如何解决这个问题。请建议。

  • ✔功能:功能文件夹上传成功 我正在开始发布过程(可能需要几分钟)... i函数:正在创建函数FollowerNotification. 其他一切工作都没有问题。只有当我试着用Firebase Firestore做东西的时候。

  • 我正在尝试在javascript中自定义一个可以通过REST调用访问的endpoint。此终结点处理与不同情况相关的多个条件(基本上它生成一次性密码,然后验证它以检查它是否过期等)。 所以基本上结构是这样的: 我在开始时设置了一个对象,然后映射一个json消息,以便检索具有不同代码/消息响应的正文。因此,当终结点输入这些条件时,它将返回对象,并且 Header 始终为 200(调用成功)。像这样:

  • 我们有一个应用程序,它将一些xml数据发布到另一个应用程序,并通过ApacheWeb服务器(版本2.2.26)反向代理传输流量。我们观察到一些零星的代理错误(http响应代码500)-删除服务器的SSL握手错误。错误消息显示在apache web服务器错误日志中。 早些时候,我们使用sunOne网络服务器,我们没有注意到这个错误。我怀疑可能是apache网络服务器上的一些缺失配置导致了这个问题。这