2012-06-20 4 views
1

헤드리스 셀렌을 사용하여 이미지가 포함 된 웹 사이트를 긁어 내려고했습니다. 처음에는 웹 사이트가 50 개의 이미지를 채 웁니다. 아래로 스크롤하면 점점 더 많은 이미지가로드됩니다.헤드리스 셀렌이있는 HTMLUNIT

윈도우 7 64
파이썬 2.7
최근 다음과 같이 셀레늄 웹 사이트를 탐색 셀레늄

[1] 비 헤드리스
의 설치 : 누구 경우 (

from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get(url) 
browser.execute_script('window.scrollBy(0, 10000)') 
browser.page_source 

이 작동 알려 주시기 바랍니다).
끝까지 도달 한 다음 소스 페이지를 가져올 때까지 scrollBy()까지 계속 진행할 수 있습니다. HtmlUnit과

from selenium import webdriver 
driver = webdriver.Remote(desired_capabilities=webdriver.DesiredCapabilities.HTMLUNIT) 
driver.get(url) 

[2]은 헤드리스 I이 머리가없는 환경에서 scrollBy()를 사용할 수 없다.
이런 종류의 페이지를 긁는 방법에 대한 제안 사항이 있으십니까? 감사합니다.

답변

0

하나의 옵션은 다음에로드 할 항목을 계산하는 방법을 알아보기 위해 JavaScript를 연구하는 것입니다. 그런 다음 그 논리를 귀하의 근근이 살아있는 클라이언트에 구현하십시오. 일단 그렇게하면 Perl의 WWW :: Mechanize와 같은 빠른 긁기 도구를 사용할 수 있습니다.) [http://code.google.com/p/selenium/wiki/HtmlUnitDriver](the 문서에 따르면

driver.setJavascriptEnabled(true); 

, 그것을 다음 HtmlUnit과 드라이버를 사용하는 경우

+2

자바 스크립트는 연구 및 구현 및 작동하고있다;

HTMLUNITDRIVERWITHJS이 가능하고 신속하다 javascript로 사용. 비슷하지만 자바 스크립트 구현이 다른 웹 페이지의 시간을 절약하기 위해 Selenium HTMLUNIT을 사용할 수 있는지 알고 싶었습니다. – user1460015

0

당신은 명시 적으로 자바 스크립트를 활성화해야 기본적으로 IE의 JavaScript 처리를 에뮬레이션해야합니다.

+1

driver.setJavascriptEnabled (true); 이것은 'driver = webdriver.Remote (desired_capabilities = webdriver.DesiredCapabilities.HTMLUNITWITHJS)'와 동일합니까? – user1460015

+0

토론에 조금 더 추가하려면 ... .page_source가 원하는 결과를 생성하는지 확인하려면 브라우저의 파일을 저장하고 드라이버를 * scrollBy * 실행 한 후. 나는 파일을 비교하고 브라우저는 일반적으로 드라이버보다 더 많은 라인 (더 많은 데이터)을 가지고있다. 이것은 드라이버가 * scrollBy *에 응답하지 않는다는 것을 알려줍니다. – user1460015

0

같은 방법을 시도했을 때 java을 연결하여 javascript을 연결하는 동안 셀렌이 충돌한다는 오류 메시지가 나타납니다.

스크립트를 execute_script 메소드에 기록한 후 코드가 잘 작동합니다.

셀레늄과 java 서버 부분 간의 통신이 제대로 구성되어 있지 않은 것 같습니다.)