RSelenium - 挂在网站上后无法执行操作

问题描述 投票:0回答:1

我正在使用 RSelenium 进行网页抓取。在网站上挂了几分钟后,我收到以下错误消息:

“.Call 中的错误(R_curl_fetch_memory,enc2utf8(url),句柄,非阻塞): 已达到已用时间限制”

以下操作时总是挂起:

remDr$navigate(URL)

应用错误处理程序后,我想关闭当前窗口并启动一个新的网络驱动程序。不幸的是,我无法连接到当前窗口来执行任何操作,因此我也找不到关闭当前窗口的方法,因为操作因应用程序回调而中止。我怀疑连接已重置。

由于我正在抓取的网站经常挂起,一段时间后会打开数十个窗口,这会减慢一切。

我不知道是否相关,但webdriver的设置如下:

 prefs = list("profile.managed_default_content_settings.images" = 2L, "profile.default_content_settings.popups" = 0L,
               "excludeSwitches","disable-popup-blocking"=TRUE) 
  cprof <- list(chromeOptions = list(prefs = prefs, w3c=FALSE))
  remDr <- remoteDriver(browserName = 'chrome', extraCapabilities = cprof, port=4444L)

感谢每一个帮助。

我尝试了以下方法来关闭窗口,但没有任何帮助:

  • remDr$close()
  • remDr$退出()
  • remDr$closeWindow()
  • remDr$closeall()

我收到一条消息,无法连接到服务器。

r web-scraping rselenium
1个回答
0
投票

如果您检查网络部分,您将看到该网站从其 API 获取数据。你也可以这样做:

library(tidyverse)
library(httr2)

df <- "https://prod-public-api.livescore.com/v1/api/app/date/soccer/20240302/1?countryCode=NO&locale=en&MD=1" %>% 
  request() %>% 
  req_perform() %>%  
  resp_body_json(simplifyVector = TRUE) %>% 
  pluck("Stages") %>% 
  unnest(Events) %>% 
  unnest(c(T1, T2), names_sep = "_")

# A tibble: 1,291 × 50
   Sid   Snm        Scd   badgeUrl firstColor Cnm   Csnm  Ccd   CompId CompN CompD CompST   Scu Eid   Pids$`12` Media$`12`
   <chr> <chr>      <chr> <chr>    <chr>      <chr> <chr> <chr> <chr>  <chr> <chr> <chr>  <int> <chr> <chr>     <list>    
 1 14414 Premier L… prem… 2023-pr… 3F1152     Engl… Engl… engl… 65     Prem… Engl… Engla…     0 9682… SBTE_1_3… <df>      
 2 14414 Premier L… prem… 2023-pr… 3F1152     Engl… Engl… engl… 65     Prem… Engl… Engla…     0 9682… SBTE_1_3… <df>      
 3 14414 Premier L… prem… 2023-pr… 3F1152     Engl… Engl… engl… 65     Prem… Engl… Engla…     0 9682… SBTE_1_3… <df>      
 4 14414 Premier L… prem… 2023-pr… 3F1152     Engl… Engl… engl… 65     Prem… Engl… Engla…     0 9682… SBTE_1_3… <df>      
 5 14414 Premier L… prem… 2023-pr… 3F1152     Engl… Engl… engl… 65     Prem… Engl… Engla…     0 9682… SBTE_1_3… <df>      
 6 14414 Premier L… prem… 2023-pr… 3F1152     Engl… Engl… engl… 65     Prem… Engl… Engla…     0 9682… SBTE_1_3… <df>      
 7 14414 Premier L… prem… 2023-pr… 3F1152     Engl… Engl… engl… 65     Prem… Engl… Engla…     0 9682… SBTE_1_3… <df>      
 8 14500 LaLiga     lali… 2023-sp… 8B0D11     Spain Spain spain 75     LaLi… Spain Spain      0 9765… SBTE_1_3… <df>      
 9 14500 LaLiga     lali… 2023-sp… 8B0D11     Spain Spain spain 75     LaLi… Spain Spain      0 9765… SBTE_1_3… <df>      
10 14500 LaLiga     lali… 2023-sp… 8B0D11     Spain Spain spain 75     LaLi… Spain Spain      0 9765… SBTE_1_3… <df>      
# ℹ 1,281 more rows
# ℹ 38 more variables: Pids$`29` <chr>, $`8` <chr>, Media$`29` <list>, $`32` <list>, T1_Nm <chr>, T1_ID <chr>,
#   T1_Img <chr>, T1_NewsTag <chr>, T1_Abr <chr>, T2_Nm <chr>, T2_ID <chr>, T2_Img <chr>, T2_NewsTag <chr>, T2_Abr <chr>,
#   Eps <chr>, Esid <int>, Epr <int>, Ecov <int>, ErnInf <chr>, Et <int>, Esd <dbl>, EO <int>, EOX <int>, LS6 <int>,
#   Spid <int>, Pid <int>, Tr1 <chr>, Tr2 <chr>, Tr1OR <chr>, Tr2OR <chr>, Trh1 <chr>, Trh2 <chr>, Ewt <int>,
#   seriesInfo <df[,4]>, Awt <int>, Trp1 <chr>, Trp2 <chr>, secondColor <chr>
# ℹ Use `print(n = ...)` to see more rows
© www.soinside.com 2019 - 2024. All rights reserved.