2017-01-08 7 views
0

특히이 웹 사이트에서 모든 이미지를 가져 오려고합니다 : http://web.archive.org/web/20160110012916/http://habibemaia.com/. 거의 모든 "src"태그를 모아서 거기에서 다운로드 할 수 있지만 타이밍이나 클릭 이벤트로 자바 스크립트에 의해 변경되는 주 그림에 문제가 있습니다. 내가 사용과 같이 클릭하려고 사업부 도착 후div의 click()이 자바 스크립트를 트리거하지 않습니다.

webClient.getOptions().setCssEnabled(true); 
webClient.getOptions().setJavaScriptEnabled(true); 
webClient.waitForBackgroundJavaScript(15000); 
webClient.waitForBackgroundJavaScriptStartingBefore(5000); 
webClient.setAjaxController(new NicelyResynchronizingAjaxController()); 
webClient.getOptions().setUseInsecureSSL(true); 

: :이처럼 내 웹 클라이언트를 설정

HtmlPage newPage = div.click(); 
DomNodeList<DomElement> newImages = newPage.getElementsByTagName("img"); 
for (DomElement img : newImages) { 
    if (img.hasAttribute("src")) { 
     newImagesStrings.add(img.getAttribute("src")); 
     System.out.println("Image added: "+img.getAttribute("src")); 
    } 
} 

나는이 브라우저하는 int div에 클릭하면을, 새로운 이미지가 나타납니다. 불행히도이 코드는 이미지를 변경하는 자바 스크립트를 트리거하지 않습니다. 사용해 보았습니다. 다른 곳에서 제안한대로 운 좋게도 클릭 한 후,

webClient.waitForBackgroundJavaScript(3000); 

클릭 후 사용했습니다. 페이지가 변경되지 않습니다. 이제 나는 아이디어가 완전히 없어졌습니다. 도와 주셔서 감사합니다.

답변

0
webClient.waitForBackgroundJavaScript(15000); 
webClient.waitForBackgroundJavaScriptStartingBefore(5000); 

은 모두 옵션 설정이 아닙니다. 당신이 어떤 행동을 취한 후에 그것들을 부르는 경우에만 make가 이해할 수 있습니다 - 코드의 설정 부분에서 이것을 제거하십시오.

이미지 관련 : 방화 광구로 페이지를 빠르게 분석했습니다. 모든 이미지가 코드의 일부이고 자바 스크립트가 가시성을 전환하는 것처럼 보입니다 (멋진 효과가 있음).

아마 뭔가 같은 :

  • 는 스타일로 모든 어린이에 걸쳐 'cameraCont'
  • 으로 반복 클래스 사업부를 찾아 'cameraSlide'
  • 이 사업부의 모든 A를 가리키는 IMG의 아이가 다른 이미지
+0

당신이 맞아요. 그리고 다른 팁도 주셔서 감사합니다! – Johnny

+0

흠, Chrome 디버그에서 이미지 링크를 볼 수 있지만 getPage()를 실행하면 첫 번째 이미지 만 있고 다른 div는 비어 있습니다. – Johnny

+0

다른 div가 display : none 스타일을 가지고 있기 때문일 수 있습니까? 클래스 나 이드가 아닌 모든 div를 수집하는 방법으로이 div를 얻고 싶습니다. 문제가 될 수있는 2.20 버전을 사용하고 있습니까? – Johnny