2015-06-11 1 views
3

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

Я попытался с помощью пакетов 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, я получаю сообщение об ошибке: список() атр ("класс") [1] "XMLNodeSet"

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

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

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

ответ

7

Вот решение, используя RSelenium и rvest.

Чтобы запустить RSelenium, вы должны сначала скачать сервер selenium от here (Mine is 2.45 version). Скажем, загруженный файл находится в папке «Мои документы». Затем вам нужно выполнить следующие два шага в cmd перед запуском RSelenium в среде IDE.
Тип следующее в ЦМД: а) cd My Documents # Я водитель селеном установлен в Мои документы папку б), а затем введите: 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.

Смежные вопросы