2014-04-01 5 views
1

아래 링크와 비슷한 페이지를 스크래핑하려고합니다. 페이지가 결과를 즉시로드하지는 않습니다.로드하기 전에 페이지 끝까지 스크롤 할 때까지 기다립니다. 더 많은 결과. 따라서 아래의 코드가 실행되면 지금까지로드 된 결과 만 가져옵니다 (이 예에서는 20,000 개 중 16 개). 지금이 기본 코드를 사용하여R, relenium 내의 전체 xml 페이지 다듬기

https://www.rbauction.com/search?id=ar&region=Europe&s=YXI3fE49NDI5NDk1NzE5MCs0Mjk0MjM4MzMy

:

require(relenium) 
require(XML) 
firefox=firefoxClass$new() 
url="https://www.rbauction.com/search?id=ar&region=Europe&s=YXI3fE49NDI5NDk1NzE5MCs0Mjk0MjM4MzMy" 
url=sprintf(url) 
firefox$get(url) 
doc=htmlParse(firefox$getPageSource()) 
title=xpathSApply(doc, "//div[@class='display-text']",xmlValue) 
title 

에만 웹 페이지의 첫 번째 16 "제목을"생산 (20,000 이상이있다). 어떤 아이디어?

답변

1

여기에서 다른 것을 검색하는 동안이 쿼리를 보았습니다. 대답 하기엔 너무 늦었는지 확실하지 않습니다. 나는 다른 웹 사이트에 대해 비슷한 도전을 최근에 가졌습니다. 이 경우의 트릭은 스크롤 다운 동작을 모방 한 소스의 요소를 찾아서 relenium을 사용하여 클릭하는 것입니다. 위 링크에 액세스 할 수 없으므로 예제를 보여 드리겠습니다.

샘플 URL : http://www.snapdeal.com/products/computers?sort=plrty&

위의 페이지가 표시됩니다 한 번에 15/20 제품. 아래의 코드를 모방 아래로 스크롤 액션

코드 :

파이어 폭스 $ get 및 ("http://www.snapdeal.com/products/computers?sort=plrty&")

으로 ButtonElement < - 파이어 폭스 $ findElementByXPath ("// * [ID @ = 'seeMoreProducts' ] ")

으로 ButtonElement의 $ 클릭() 당신은 단지 루프에 넣고하고에 의존적을 반복해야합니다

한 번에 표시되는 결과와 결과의 총 수에 따라 달라집니다.

결과 수가 증가하고 계속해서 아래로 스크롤하면 모든 데이터가 페이지에 계속 표시되어 매우 느린 프로세스가됩니다.

궁극적으로 다른 페이지의 변경된 URL을 이해할 수있는 대안을 발견했습니다. 주소 표시 줄에 표시되지 않을 수도 있지만 실제 URL은 바뀌고 있습니다. 소스를 탐색하면 찾을 수 있습니다.