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