2016-10-22 24 views
0

我想從autotrader.co.uk刮取一些汽車數據。當你在這個網站上搜索每頁包含12輛汽車的信息。我正在分開價格和模型,它給了我12個元素的2個向量(使用rvest)。然而,我不能單獨劃分里程數,年齡等,因爲它們與其他變量一致,並且它們的位置可能會根據賣方包括多少變量而改變。 如果您查看包含圖像的豐田註冊年份的CSS,則會給我CAT C爲福特KA,而不是年份,因爲此變量位於此車的第二位。所以我必須使用整條線的CSS來捕獲信息。webscraping時不等數量的元素

enter image description here

我決定湊整行(命名爲所得載體info)。但是,這種方法爲我提供了80多個元素的矢量(對於每個變量,如年,英里等)。問題是我想加入數據框架中的模型,價格和其他信息,我不能這樣做,因爲info比前兩個向量有更多的元素。

我使用的代碼:

URL <- "http://www.autotrader.co.uk/car-search?sort=price-asc&radius=1500&postcode=np198jj&onesearchad=Used&onesearchad=Nearly%20New&onesearchad=New&page=" 
link <-read_html(URL) 
price <- html_nodes(link, ".search-result__price") %>% 
    html_text() 
info <- html_nodes(link, ".search-result__attributes li") %>% 
     html_text() 

使用xpath的信息給同80 +元素。 我也試圖concancanate在信息每臺車的元素,但沒有成功:

str_replace_all(info, collapse = "---") 

所以我的問題是我怎麼能刮上一年的信息,里程等,使這些都是爲每一個元素汽車。另外,也許有可能分別針對年份,英里和其他變量。

回答

0

固定的URL和屬性扔下li

library(rvest) 
URL <- "http://www.autotrader.co.uk/car-search?sort=price-asc&radius=1500&postcode=np198jj&onesearchad=Used&onesearchad=Nearly%20New&onesearchad=New" 
> link <- read_html(URL) 
> price <- html_nodes(link, ".search-result__price") %>% 
> html_text() 
> info <- html_nodes(link, ".search-result__attributes") %>% 
> html_text() 
> identical(length(price), length(info)) 
[1] TRUE