1

나는 클라이언트로부터이 정보에 대한 요청에 응답하여 실시간으로 여러 웹 사이트에서 정보를 동시에 가져 오는 크롤러를 구축 중입니다. 나는 10-20 개의 웹 사이트에서 특정 페이지를 요청하고 정보 내용을 분석하여 가능한 한 빨리이 정보를 클라이언트에게 반환해야합니다. 비동기 적으로 수행하려고하므로 클라이언트는 준비가 완료되는 즉시 첫 번째 결과를 표시하고 다른 요청은 아직 보류 중입니다.실시간/병렬 HTTP 크롤러의 라이브러리/플랫폼이 좋습니까?

저는 루비 배경을 가지고 있기 때문에 루비에서 솔루션을 빌드하는 것을 선호합니다 - 그러나 병렬성과 속도는 루비가 뛰어나지 않는 것으로 알려져 있습니다. 나는 EventMachineTyphoeus과 같은 라이브러리가 그것을 치료할 수 있다고 믿지만, 나는 또한 꽤 잘 알고 있고 이런 종류의 것을 위해 만들어 졌기 때문에 나는 node.js을 강력하게 고려하고있다.

무엇을 선택하든 결과를 클라이언트에게 전달하는 효율적인 방법이 필요합니다. 나는 일반 AJAX (서버 폴링이 필요함), 웹 소켓 (예 : 이전 브라우저의 폴백) 및 Cramp, JuggernautPusher과 같은 지속적인 클라이언트/서버 통신을위한 특정 솔루션을 고려하고 있습니다.

누구나 공유하고 싶은 경험이나 권장 사항이 있습니까?

답변

1

노드가이 유형의 작업을 확실히 처리 할 수 ​​있습니다 - 비동기 소켓 및 http communciation은 구워지고 함께 작업하는 것이 정말 즐겁습니다.

대부분의 작업은 j/Ruby이고 서버 측 JavaScript 로의 전환은 꽤 어려웠습니다. 웹 개발자는 몇 년 전 js를 잘 알고 서버 개발 개념은 언어에 관계없이 거의 동일하다는 것을 알았습니다.

통신 측면에서 노드의 소켓 통신을 처리하는 데 적합한 클라이언트 및 서버 프레임 워크는 플래시, 아약스 및 websocket 채널을 지원하므로 모든 현대 (일부 구형) 브라우저에서 사용할 수 있습니다.

+0

일을 방해 없음 브라우저 창은 진정한 멀티 스레드, 나는 생각하지만 1.9이 작동 것 게다가 – rogerdpack

0

크롤러에서 자바 스크립트 지원이 필요한 경우 http://htmlunit.sourceforge.net/을 권장합니다.
는 사용할 수 JRuby를 래퍼가 http://celerity.rubyforge.org/

특징은 다음과 같습니다 (사이트에서 가져온) :

  • 빠른 - 더 많은 시간이 소요 GUI 렌더링 또는 본질적이 아닌 다운로드
  • 쉽게 사용할 수 없음 - 간단한 API
  • JavaScript 지원
  • 확장 성 - Java 스레드를 사용하면 테스트를 병렬로 실행할 수 있습니다.
  • 휴대용 - JVM을
  • 방해없는에 크로스 플랫폼 덕분에 - 처리 할 수 ​​있기 때문에 JRuby를위한 워크 플로우 ( 백그라운드에서 실행)
관련 문제