2016-10-22 2 views
0

일부 자동차 데이터를 autotrader.co.uk에서 긁어 내고 싶습니다. 이 사이트에서 검색 할 때 각 페이지에는 12 대에 대한 정보가 들어 있습니다. 가격과 모델을 따로 따로 긁어 모으고 있습니다.이 모델은 12 요소의 벡터 2 개를 제공합니다 (rvest 사용). 그러나 마일, 연령 등을 따로 따로 긁을 수는 없습니다. 변수가 다른 변수와 일렬로 있기 때문에 각 자동차의 위치는 판매자가 포함하는 변수의 수에 따라 달라질 수 있습니다. 포함 된 이미지를 보면 Toyota에 사용 된 등록 연도의 CSS가이 변수가이 자동차의 두 번째 위치에 있으므로 포드 카에 CAT C를 제공하고 연도는 제공하지 않습니다. 그래서 전체 줄에 CSS를 사용하여 정보를 캡처해야합니다. 웹 스크랩시 요소 수가 동일하지 않음

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 
관련 문제