如果运行时间太长,只需忽略循环中的命令

问题描述

我尝试使用 R-Selenium 在网站上抓取大量页面代码如下所示:

library(RSelenium)
library(rvest)

rD<-rsDriver(browser = 'firefox',port = 581L)
remDr<-rD$client

vec<-c('/de/shop/head-wc-rebels-irace-ski-set-1819-schwarz-00002001874564-p.html','/de/shop/alpina-jump-20-qvm-skihelm-rosegold-00002001878075-p.html','/de/shop/roxy-backyard-damen-sNowboardhose-gelb-00002001878176-p.html','/de/shop/giro-envi-mips-damen-skihelm-lila-00002001883070-p.html')

for (i in vec) {
  remDr$navigate(paste0('https://www.ochsnersport.ch',i))
  
  Sys.sleep(10)
  
  Produktinfo_html<-read_html(remDr$getPageSource()[[1]])}

当你运行它时,你会看到,当涉及到第三个网页时,循环不会继续;'https://www.ochsnersport.ch/de/shop/roxy-backyard-damen- sNowboardhose-gelb-00002001878176-p.html' -> 有点乱。

这是一个 MRP,我想抓取比它们多得多的网站。因此,像上面这样的乱七八糟的页面可能会更频繁地出现。

因此,当 remDr$getPageSource() 尝试读取提到的网页时,读取 html 需要很长时间,并且会出现错误,最终导致循环中断。所以首先,我已经尝试实现 WithTimeout (R.Utils) 来在它运行几秒钟后停止该命令。但这也给了我一条错误消息并打破了循环。所以我真的不知道,如何继续?

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)