2010-04-19 6 views
18

JavaScript를 해석 할 수있는 웹 크롤러를 작성하고 싶습니다. 기본적으로 URL을 입력으로 사용하고 Firebug HTML 창에서 출력과 유사한 DOM 트리를 출력하는 Java 또는 PHP 프로그램입니다. 가장 좋은 예는 '소스보기'를 할 때 브라우저에 표시되는 결과 DOM을 볼 수 없지만 Firebug를 통해 결과 HTML을 저장할 수있는 Kayak.com입니다.JavaScript를 해석 할 수있는 웹 크롤러

어떻게해야합니까? 나를 도울 도구가 있습니까?

+3

Webkit을 사용할 수 있습니다. – Seth

+15

차가움. 귀하의 질문은 무엇인가? –

+0

크롤링하려는 페이지에서 JavaScript 코드를 실행할 수있는 웹 크롤러를 작성하려고합니다. 예를 들어 일부 페이지에는 AJAX 호출 또는 JavaScript 배열의 데이터로 페이지를 채우는 JavaScript 코드가 있습니다. FireFox에서 이러한 페이지를 열고보기 -> '페이지 소스'를 클릭하면 브라우저 창에 표시되는 전체 HTML DOM이 표시되지 않습니다.하지만 파이어 버그 플러그인이 설치되어 있다면, firebug를 열고, HTML 탭을 클릭하고, 디버그 창에서 을 오른쪽 클릭하고 "HTML 복사"를 클릭하여 텍스트 편집기에 붙여 넣으면 JavaScript 코드에 의해 생성 된 HTML DOM을 볼 수 있습니다 . – user320662

답변

2

PHP보다 Java에서 성공할 확률이 큽니다. Rhino이라는 Java 용 자바 스크립트 인터프리터가 있습니다. 참조 구현이며 문서화가 잘되어 있습니다.

Rhino는 많은 자바 응용 프로그램에서 응용 프로그램 내에서 자바 스크립팅 기능을 제공하기 위해 사용됩니다. 또한 Javascript로 자동화 된 테스트를 수행하는 데 도움이되는 정보도 들어 있습니다.

Java는 Java를 파싱하고 렌더링 할 수있는 코드를 포함하고 있지만 Java에 대해 더 많이 알고있는 사람이라면 더 많은 정보를 얻을 수 있습니다. 나는 이런 것을 성취하는 것이 매우 어려울 것이라고 부인하지 않습니다. 당신은 본질적으로 브라우저가하는 것을 다시 구현할 것입니다.

+0

안녕하세요 thomasrutter, 포인터 주셔서 감사하지만 rhino가 자바 스크립트 엔진 인 것 같아요. 아마도 Rhino를 JavaScript 엔진으로 사용하여 JavaScript 무거운 페이지를 크롤링해야합니다. 내가 틀렸다면 나를 바로 잡으십시오. – user320662

+0

자바는 HTML 해석/렌더링 기능도 포함하고 있습니다. 나보다 Java에 대해 더 많이 알고있는 사람이라면 더 잘 조언 할 수 있습니다. 내 지식은 여기서 끝납니다. – thomasrutter

5

저는 HtmlUnit (Java)을 사용하고 있습니다. 이것은 원래 단위 테스트 페이지 용으로 설계되었습니다. 그것은 완벽한 자바 스크립트 아니지만, 내 제한된 사용에 실패하지 않았습니다.

  • jQuery를 1.2.6
  • MochiKit 1.4.1
  • GWT 2.0.0
  • 사리 사 0.9.9.3
  • 을 : 사이트에 따르면, 적당한 정도에 다음 JS 프레임 워크를 실행할 수 있습니다
  • Mootools의 1.2.1
  • 프로토 1.6.0
  • 내선 JS 2.2
  • 도장 1.0.2
  • 0,123,
  • YUI 2.3.0
+0

php 스크립트와 함께 사용하려면 java에 대해 알고 있어야합니까? –

+0

java와 함께 사용해야합니다. PHP 용 셀렌 기반 솔루션을 사용해 볼 수도 있지만. – Jeff

6

루비의 Capybara는 통합 테스트 라이브러리뿐만 아니라 독립형 웹 - 작성하는 데 사용할 수 있습니다 겉옷. http://snippets.scrapy.org/snippets/22/ 가 열려 webdrivers 사용 파이썬 스크린 스크래핑 및 웹 크롤링 프레임 워크입니다 :

require 'capybara/dsl' 
require 'capybara-webkit' 

include Capybara::DSL 
Capybara.current_driver = :webkit 
Capybara.app_host = "http://www.google.com" 
page.visit("/") 
puts(page.html) 
1

여기에 모습을 보내기는 셀레늄 또는 헤드리스 웹킷 같은 백엔드를 사용하는 감안할 때, 그것은 밖으로의 상자 것은 자바 스크립트를 해석 페이지에서 원하는 모든 것을 렌더링하고 페이지에서 원하는 것을 "캡처"할 수있는 가능성을 제공합니다.