【问题标题】:I get blocked when I try to scrape with RSelenium当我尝试使用 RSelenium 进行刮擦时,我被阻止了
【发布时间】:2021-05-17 07:23:08
【问题描述】:

我尝试使用以下代码抓取网站:

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))
}

但是当循环转到第二个网页时,它不能再访问该网站了。

谁能帮我解决这个问题?

非常感谢!

【问题讨论】:

  • 你想从页面中提取什么?

标签: r web-scraping rselenium


【解决方案1】:

我让它与 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.–"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多