Веб-скраппинг RSelenium всегда возвращает Null

Я новичок в парсинге веб-страниц и пытаюсь получить данные о бюджете фильма из IMDb. Вот мой код:

budget=vector()
for(i in 1:50){
remDr$navigate('http://www.imdb.com/search/title?sort=moviemeter,asc&start=1&title_type=feature&year=2011,2011')
webElems=remDr$findElements('css selector','.wlb_lite+ a')
webElems[[i]]$clickElement()
b=remDr$findElements('css selector','.txt-block:nth-child(11)')
b_text=unlist(lapply(b, function(x){x$getElementText()}))
if(is.null(b_text)==T){
  budget=c(budget,'NULL')
  }

if(is.null(b_text)==F){budget=c(budget,'NULL')}
print(b_text)
}

На каждой странице 50 фильмов. Я хочу щелкнуть каждую ссылку одну за другой и собрать соответствующие данные о бюджете. Если я не запускаю код в цикле, код работает хорошо. Но код всегда возвращает «Null», когда я запускаю его в цикле. Боюсь, это потому, что страницы не загружаются полностью в цикле. Я пытался использовать команды setTimeout и setImplicitWaitTimeout, но они не работают. Кто-нибудь может мне помочь?


person Allen    schedule 08.01.2016    source источник


Ответы (1)


пытаться

Sys.sleep(time in seconds)

для каждого цикла вместо setTimeout.

Это решило проблемы, подобные вашей, для меня.

person Bharath    schedule 11.01.2016
comment
Благодарю вас! Я попробовал Sys.sleep, и он работает! Дело в том, есть ли у R способ определить, загружена веб-страница или нет? - person Allen; 13.01.2016
comment
Думаю, в RSelelnium это интуитивно понятно. Как только вы переходите на страницу, следующая строка кода выполняется только после загрузки веб-страницы. Но Sys.sleep дает дополнительное время. Наверное!! я не уверен - person Bharath; 14.01.2016