2016-10-22 10 views
0

autotrader.co.ukから車のデータを抜きたい。このサイトで検索すると、各ページには12台分の情報が含まれています。私は12の要素の2つのベクトルを与える価格とモデルを別々に掻き集めています(rvestを使って)。しかし、マイル、年齢などは、他の変数と一直線に並んでいますので、私は個別に削ることができず、売り手に含まれる変数の数に応じて車ごとの位置が変わることがあります。 付属の画像を見ると、Toyotaに使用された登録年のCSSは、この変数がこの車の2番目の位置にあるので、年ではなく、Ford KAのCAT Cを私に渡します。だから私はCSSを使って情報を取得する必要があります。ウェブスクレイピング時に要素数が異なる

enter image description here

私は(得られたベクターinfoという名前の)行全体をこすりすることを決めました。しかし、このアプローチは私に80 +要素のベクトルを与えます(年、マイルなどの各変数に対して)。問題は、データフレーム内のモデル、価格、その他の情報に加わりたいということです。infoには最初の2つのベクトルよりも多くの要素があるため、これを行うことはできません。

私が使用したコード:

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 = "---") 

だから私の質問は、これらのすべてが、それぞれに1つの要素になるように、私は今年、マイルなどの情報をこすりことができる方法です車。代わりに、おそらく年、マイル、その他の変数を別々に目標にする可能性があります。

答えて

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 
関連する問題