Rvest: не все строки сбрасываются [дубликаты]

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

19
задан nrussell 28 April 2015 в 19:54
поделиться

1 ответ

Как предложил @nrussell, вы можете использовать RSelenium для программной прокрутки вниз страницы до получения исходного кода.

Вы могли бы, например, сделать:

library(RSelenium)
library(rvest)
#start RSelenium
checkForServer()
startServer()
remDr <- remoteDriver()
remDr$open()

#navigate to your page
remDr$navigate("http://www.linio.com.co/tecnologia/celulares-telefonia-gps/")

#scroll down 5 times, waiting for the page to load at each time
for(i in 1:5){      
remDr$executeScript(paste("scroll(0,",i*10000,");"))
Sys.sleep(3)    
}

#get the page html
page_source<-remDr$getPageSource()

#parse it
html(page_source[[1]]) %>% html_nodes(".product-itm-price-new") %>%
  html_text()
22
ответ дан NicE 19 August 2018 в 16:02
поделиться
  • 1
    Отлично. Оно работало завораживающе. Благодаря! – Omar Gonzales 1 May 2015 в 20:44
  • 2
    Я изучал Javascript, но я не получаю цикл for, который вы использовали. Не могли бы вы указать мне на документ, пожалуйста? – Omar Gonzales 4 September 2015 в 14:49
  • 3
    это петля R for, а не javascript, некоторая информация здесь – NicE 6 September 2015 в 13:18
  • 4
    спасибо, но я говорил о прокрутке & lt; pre & gt; (0, "i * 10000,") & lt; / pre & gt; Я слышал, что "свиток" команда используется в Javascript (например, этот: клик, зависание и т. д.). 2.- Почему «i * 10000»? Это: для каждого цикла прокрутка 10 000 пикселей? – Omar Gonzales 6 September 2015 в 16:04
  • 5
    Я попытался сделать тот же код, что и выше, но он дает мне «символ (0)». Почему это так? – deepesh 23 June 2017 в 08:26
Другие вопросы по тегам:

Похожие вопросы: