2009-04-29 5 views
25

나는 마지막 페이지를 얻을 수 없다,Mechanize를 사용하여 JavaScript를 처리하는 방법은 무엇입니까?

웹 사이트가 새 페이지 나 리디렉션 및 모든 쿠키 및 재 작업에 거래를 기계화. 로그인, 웹 사이트에 연결 만하고 있습니다. 나는 방화범을 사용하고 다시 똑같은 일을했고 Mechanize와 함께 전달해야하는 페이지가 2 개 더 있다는 것을 알았습니다.

페이지를 빠르게 살펴본 결과 일부 JavaScript 및 HTML 코드가 있지만 정상적인 페이지 코드처럼 보이지 않아 이해할 수 없었습니다. 그 페이지들은 무엇입니까? 어떻게 다른 페이지로 리디렉션 할 수 있습니까? 이것을 통과하려면 어떻게해야합니까?

+3

왜 자바 스크립트를 http://pastie.org/와 같은 붙여 넣기 사이트에 넣고 여기에 링크를 게시 하시겠습니까? – method

답변

36

자바 스크립트가있는 페이지를 처리해야하는 경우 WATIR 또는 Selenium으로 시도하십시오. 실제 웹 브라우저를 구동하므로 모든 자바 스크립트를 처리 할 수 ​​있습니다. WATIR Classic은 특정 확장자가 설치된 IE 또는 Firefox가 필요하며 화면이 작동하면 페이지가 깜박입니다.

다른 옵션은 문제가되는 페이지의 Javascript가 무엇인지 이해하고 수동으로 우회하는 것이지만 부담 스럽습니다.

+1

여러분, 고마워요. watir은 내가하고 싶은 것을 해냈다. :) 루비에 더 많은 것을 가져다 준다. 처음에는 웹 사이트에서 user_agent 때문에 화를 냈지만 firefox로 설정하면 문제가된다. 가버렸다. stackoverflow 바위! 나는 여기에 :) – user96960

+0

@millimoose WATIR에서 스크립트를 실행하는 동안 브라우저를 숨길 수 있습니까? – Volatil3

+0

와우, 스레드 necromancy. 나는 더 이상 생각을하지 못하고 "아니오"라고 내기 할 것입니다 - 그리고 여하튼 이것은 OP가 요구 한 질문과 다른 질문입니다, 그래서 당신은 따로 따로 질문 할 수 있습니다. 그래서 다른 누군가가 대답 할 기회가 있습니다. 필자도 PhantomJS를 살펴볼 생각이다. 그것은 Headless (즉, "UI 없음") WebKit 자동화 도구이다. 잘 작동하지만 마지막으로 무언가에 사용하기를 원했던 비동기 API로 인해 너무 복잡해지기 때문에 Selenium과 함께했습니다. – millimoose

13

현재 Mechanize는 JavaScript를 처리하지 않습니다. 이 결국 기계화에 Johnson의 기능을 병합의 이야기지만, 그렇게 될 때까지, 두 가지 옵션이 있습니다 : 해당 페이지를 통과하는 방법을 이해하는 것이 충분히 자바 스크립트 밖으로

  1. 그림.
  2. 실제 브라우저를 자동화하여 을 입력하면Watir을 사용하여 자바 스크립트를 자동으로 인식합니다.
+0

존슨은 죽은 프로젝트입니다. 대체품이 있습니까? – zhon

5

해당 페이지는 무엇입니까? 다른 페이지로 리디렉션 할 수있는 방법. 이걸 통과하려면 어떻게해야합니까?

경우에 따라 해당 페이지에서 작업이 수행됩니다. 가끔 자바 스크립트는 당신이하려는 것과 같은 자동화 된 접근을 막기 위해 존재합니다. :) 많은 웹 사이트에서 불필요한 검사를 통해 "양호한"브라우저를 제공하므로 user_agent이 IE와 같은 일반적인 것으로 설정되어 있는지 확인하십시오. 때로는 user_agent을 오래된 브라우저처럼 보이게 설정하면 JavaScript 없이도 쉽게 사용할 수 있습니다.

웹 사이트 자동화는 여러 가지 전략을 사용하여 웹 사이트 및 소프트웨어 개발자보다 앞서야하기 때문에 재미 있습니다. 다른 사람들과 마찬가지로, Watir은 지금 JavaScript를 지나치는 최고의 도구입니다.

관련 문제