Веб-скрапинг марки/модели/года номеров VIN в RStudio

В настоящее время я работаю над проектом, в котором мне нужно найти производителя, модель и год номеров VIN. У меня есть список из 300 различных номеров VIN. Просматривать каждый отдельный номер VIN и вручную вводить производителя, модель и год в Excel очень неэффективно и утомительно.

Я попытался использовать пакеты Rvest с SelectorGadget, чтобы написать несколько строк кода на R, чтобы очистить этот сайт и получить информацию, но мне это не удалось: http://www.vindecoder.net/?vin=1G2HX54K724118697&submit=Decode

Вот мой код:

library("rvest")
Vnum = "1G2HX54K724118697"
site <- paste("http://www.vindecoder.net/?vin=", Vnum,"&submit=Decode",sep="")
htmlpage <- html(site)
VINhtml <- html_nodes(htmlpage, ".odd:nth-child(6) , .even:nth-child(5) , .even:nth-child(7)")
VIN <- html_text(forecasthtml)
paste(forecast, collapse =" ")

Когда я пытаюсь запустить VINhtml, я получаю сообщение об ошибке: list() attr(,"class") [1] "XMLNodeSet"

Я не знаю, что я делаю неправильно. Я думаю, что это не работает, потому что это динамическая веб-страница, но я могу ошибаться. Есть ли у кого-нибудь предложения о том, как лучше всего подойти к этой проблеме?

Я также открыт для использования других веб-сайтов или альтернативных подходов к выяснению этого. Я просто хочу найти модель, производителя и год выпуска этих VIN. Может ли кто-нибудь помочь мне найти эффективный способ сделать это?

Вот некоторые примеры VINs: YV4SZ592561226129 YV4SZ592371288470 YV4SZ592371257784 YV4CZ982871331598 YV4CZ982581428985 YV4CZ982481423003 YV4CZ982381423543 YV4CZ982171380593 YV4CZ982081460887 YV4CZ852361288222 YV4CZ852281454409 YV4CZ852281454409 YV4CZ852281454409 YV4CZ592861304665 YV4CZ592861267682 YV4CZ592561266859


person radaley1906    schedule 11.06.2015    source источник


Ответы (1)


Вот решение с использованием RSelenium и rvest.

Чтобы запустить RSelenium, вы должны сначала загрузить сервер selenium с здесь (у меня версия 2.45). Допустим, загруженный файл находится в каталоге Мои документы. Затем вам нужно выполнить следующие два шага в cmd, прежде чем запускать RSelenium в IDE.
Введите следующее в cmd: a) cd My Documents # Драйвер selenium установлен в папке «Мои документы» b) и затем введите: java -jar selenium-server-standalone-2.45.0.jar

library(RSelenium)
library(rvest) 
startServer() 
remDr <- remoteDriver(browserName = 'firefox')
remDr$open()
Vnum<- c("YV4SZ592371288470","1G2HX54K724118697","YV4SZ592371288470")

kk<-lapply(Vnum,function(j){

  remDr$navigate(paste("http://www.vindecoder.net/?vin=",j,"&submit=Decode",sep=""))
  Sys.sleep(30) # this is critical
  test.html <- html(remDr$getPageSource()[[1]]) # this is RSelenium but after this we can use rvest functions until we close the session
  test.text<-test.html%>%
  html_nodes(".odd:nth-child(6) , .even:nth-child(5) , .even:nth-child(7)")%>%
  html_text()
})
kk
[[1]]
[1] "Model: XC70"                          "Type: Multipurpose Passenger Vehicle" "Make: Volvo"                         

[[2]]
[1] "Model: Bonneville"            "Make (Manufacturer): Pontiac" "Model year: 2002"            

[[3]]
[1] "Model: XC70"                          "Type: Multipurpose Passenger Vehicle" "Make: Volvo"   

remDr$close()

P.S. Вы можете видеть, что один и тот же путь css не применим для всех VIN. Вы должны выяснить это заранее (я просто использовал путь, который вы указали в вопросе). Вы можете использовать своего рода tryCatch.

person Metrics    schedule 11.06.2015