2014-06-11 2 views
0

여러 제품의 등급을 나열하는 웹 사이트의 데이터를 스크랩하려고합니다. 따라서 제품에 800 개의 브랜드가 있다고 가정 해 보겠습니다. 따라서 페이지 당 10 개의 브랜드로 8 페이지의 데이터를 스크랩해야합니다. 예 : 다음은 유아 관리 데이터입니다. 내가 필요로 브랜드 가치가 24 페이지가 있습니다 - http://www.goodguide.com/products?category_id=152775-baby-care&sort_order=DESC#!rf%3D%26rf%3D%26rf%3D%26cat%3D152775%26page%3D1퍼센트 26filter %의 3D는 % 26sort_by_type % 3Drating % 26sort_order % 3DDESC % 26meta_ontology_node_id % 3D연속 URL에서 웹 스크 레이 핑하기 R

그 유일한이기 때문에 나는 1의 굵은 글꼴을 사용했다 페이지마다 이동하면서이 URL이 변경됩니다. 그래서 저는 R에 루프를 작성하는 것이 간단 할 것이라고 생각했습니다.하지만 제가 발견 한 것은 2 페이지로 이동하면 페이지가 다시로드되지 않는다는 것입니다. 대신, 결과는 약 5 초 만에 업데이트됩니다. 그러나 R은 5 초 동안 기다리지 않으므로 첫 페이지에서 26 번 데이터를 받았습니다.

또한 2 페이지 URL을 직접 입력 해보고 루프없이 코드를 실행했습니다. 같은 이야기 - 1 페이지 결과가 있습니다. 나는이 문제에 직면하는 유일한 사람이 될 수 없다고 확신한다. 어떤 도움을 주셔서 감사합니다. 코드를 첨부했습니다.

감사합니다. 그리고 제 질문이 충분히 분명하기를 바랍니다. HTML 소스를 참조

# build the URL 

N<-matrix(NA,26,15) 
R<-matrix(NA,26,60) 

for(n in 1:26){ 

url <- paste("http://www.goodguide.com/products?category_id=152775-baby-care&sort_order=DESC#!rf%3D%26rf%3D%26rf%3D%26cat%3D152775%26page%3D",i,"%26filter%3D%26sort_by_type%3Drating%26sort_order%3DDESC%26meta_ontology_node_id%3D") 


raw.data <-readLines(url) 

Parse <- htmlParse(raw.data) 

##### 
A<-querySelector(Parse, "div.results-container") 

##### 
Name<-querySelectorAll(A,"div.reviews>a") 
Ratings<-querySelectorAll(A,"div.value") 

N[n,]<-sapply(Name,function(x)xmlGetAttr(x,"href")) 
R[n,]<-sapply(Ratings,xmlValue) 
} 
+0

당신은 항상 [Sys.sleep] 할 수있는 (http://stat.ethz.ch/R-manual/R-devel/library/ base/html/Sys.sleep.html)을 호출합니다. 그것이 내가 Qualys Labs의 [SSL Tester] (http://datadrivensecurity.info/blog/posts/2014/Apr/scraping-ssl-server-test-results-with-r/)에서 데이터를 수집하기 위해 한 일입니다. – hrbrmstr

+0

반복자가'n'이지만, URL을 만들 때'i'를 붙여 넣는 것입니다. – jbaums

+0

감사합니다 jbaums, 그것을 고쳤고 여전히 작동하지 않습니다 : ( – Snickers

답변

0

당신이 원하는 URL이이 구조를 단순화 할 수 있다는 것을 보여 예상대로

http://www.goodguide.com/products?category_id=152775-baby-care&page=2&sort_orde‌​r=DESC.

이러한 URL의 내용은 R로 검색됩니다. 당신은 또한 바로 갈 수

참고 :

u <- sprintf('http://www.goodguide.com/products?category_id=152775-baby-car‌​e&page=%s&sort_order=DESC', n) 
Parse <- htmlParse(u) 
+0

감사합니다 jbaums. 이것을 시도 할 것이다. – Snickers

+0

그것은 일했다 :) 고마워. 2 페이지의 HTML 소스를 어떻게 파악했는지 말씀해 주시겠습니까?이 책은 매우 새로워서 배우고 싶습니다. 너무 많은 질문에 대해 죄송합니다. – Snickers

+0

@ user3728332 : 조금 운이 좋았다고 생각합니다. 나는 '페이지'와 '페이지 매김'을 찾기 위해 소스를 검색했습니다. 나는 페이지 버튼이 날아가는 원시 URL에 일부 GET 매개 변수를 추가한다고 생각하며, 아마도 페이지가 더듬 거리는 원인이되는 필터링 일 것입니다. – jbaums

관련 문제