2013-12-13 6 views
2

사이트를 스크랩하고 결과를 돌려주고 데이터를 조작하기 위해 CasperJS를 사용하는 Ruby 응용 프로그램이 있습니다.Scanting Phantom/CasperJS scrapping?

지금 내 CasperJS 스크립트는 약 200MB를 소비하므로 병렬 5 개 인스턴스를 실행하려면 계산을 수행해야합니다. :) 나는 이것을 Heroku에 배치하려고 생각하고 있지만, 나는 작업자에 대한 메모리 한계를 맞을 것이라고 확신한다.

메모리 사용을 줄이거 나 확장 가능하도록하려면 어떻게해야합니까? 나는 병렬로 10 페이지 이상을 파싱 할 수 있기를 원한다. 내가 HTML을 폐기하는 것뿐만 아니라 페이지의 모든 요소가 어디에 있는지보고 싶기 때문에 헤드리스 브라우저가되어야한다.

답변

1

저는 Pinterest와 같은 사진 집약적 인 사이트에서 특히 같은 상황에 처합니다. 이 경우 PhantomJS가 메모리 사용량이 1GB가 될 때까지 약 30 분 동안 한 세션에서만 실행할 수있었습니다.

캐스퍼는 이미지를 다운로드하지 않아도되므로 팬텀으로 메모리를 절약 할 수 있습니다. 페이지 캐싱으로 인해 메모리가 구축되고 있다고 가정합니다. 이 문제에 대해 다른 사람의 의견을 듣고 싶습니다.

너무 많은 대안이 있다고 생각하지 않습니다. PhantomJS의 한계점은 Selenium보다 여전히 빠릅니다.

+0

실제로 이미지가 필요합니다./글쎄, 더 많은 돈을 지불하고 스레드가 아닌 더 많은 직원으로 비웃을 것입니다. 어떤 방법 으로든 다른 사람이 대답하는지 보자 :) –

0

@Hommer 스미스, 캐시에 이미지를 넣어, 당신의 프론트 엔드에 광택을 생각하고 CasperJS의 일을 놓습니다.

외부 페이지를로드하기 전에 바니시를 사용하도록 CasperJS를 설정하면 너무 많은 메모리가 필요하지 않습니다.

아직 팁을 얻지 못했지만 해결책은 아직 없습니다.

감사합니다.