如何解决当我尝试使用 RSelenium 抓取时被阻止
library(RSelenium)
library(dplyr)
library(rvest)
rD<-rsDriver(browser = 'firefox',port = 4875L)
remDr<-rD$client
input_galaxus<-c('https://www.galaxus.ch/8606656','https://www.galaxus.ch/9796481','https://www.galaxus.ch/10592688')
vec_galaxus<-vector()
i=0
for (j in input_galaxus){
remDr$navigate(j)
i=i+1
try(vec_galaxus[i]<-read_html(remDr$getPageSource()[[1]])%>%
html_nodes('div strong')%>%
html_text()%>%
nth(5))
Sys.sleep(runif(1,min=5,max=10))
}
但是当循环转到第二个网页时,它无法再访问该网站。
有人能帮我解决这个问题吗?
非常感谢!
解决方法
我让它与 rvest
会话一起工作 - 不需要 Selenium。只需删除 RSelenium 行并将您的 for
循环替换为
sess <- session(input_galaxus[1]) #to start the session
for (j in input_galaxus){
sess <- sess %>% session_jump_to(j) #jump to URL
i=i+1
try(vec_galaxus[i] <- read_html(sess) %>% #can read direct from sess
html_nodes('div strong') %>%
html_text() %>%
nth(5))
Sys.sleep(runif(1,min=5,max=10))
}
vec_galaxus
[1] " 399.–" " 660.–" " 931.–"
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。