2016-10-22 3 views
0

Я хочу скопировать некоторые данные автомобиля с autotrader.co.uk. При поиске на этом сайте каждая страница содержит информацию для 12 автомобилей. Я расчесываю отдельно цену и модель, которая дает мне 2 вектора из 12 элементов (используя rvest). Однако я не могу царапать отдельно мили, возраст и т. Д., Поскольку они находятся в линии с другими переменными, и их положение для каждого автомобиля может меняться в зависимости от того, сколько переменных включено продавцом. Если вы посмотрите на включенное изображение, CSS для года регистрации, используемого для Toyota, даст мне CAT C для Ford 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