Я установил облачную службу PhantomJs, и она в значительной степени выполняет то, что вы просите. Это заняло у меня около 5 недель работы.
Самая большая проблема, с которой вы столкнетесь, - это известная проблема утечек памяти в PhantomJs . Способ, которым я работал вокруг этого, состоит в том, чтобы циклически повторять мои экземпляры каждые 50 вызовов.
Вторая по величине проблема, с которой вы столкнетесь, заключается в том, что обработка каждой страницы очень ресурсоемка и требует много памяти, поэтому вы сможете запускать только 4 или более экземпляров на процессор.
Третья самая большая проблема, с которой вы столкнетесь, заключается в том, что PhantomJs довольно дурацки с событиями завершения страницы и перенаправлениями. Вы будете проинформированы о том, что ваша страница закончила рендеринг, прежде чем она на самом деле. Есть несколько способов справиться с этим , но, к сожалению, нет ничего «стандартного».
Четвертая по величине проблема, с которой вам придется столкнуться, это взаимодействие между nodejs и phantomjs, к счастью, существует множество пакетов npm, которые решают эту проблему на выбор.
Так что я знаю, что я предвзят (поскольку я написал решение, которое я собираюсь предложить), но я предлагаю вам проверить PhantomJsCloud.com , который бесплатен для легкого использования .
Обновление в январе 2015 года: Еще одна (5-я?) Большая проблема, с которой я столкнулся, - это как отправить запрос / ответ от менеджера / балансировщика нагрузки. Первоначально я использовал встроенный HTTP-сервер PhantomJS, но продолжал сталкиваться с его ограничениями, особенно в отношении максимального размера ответа. Я закончил тем, что написал запрос / ответ в локальную файловую систему как линии связи. * Общее время, затрачиваемое на внедрение услуги, составляет, возможно, 20 человеко-недель, то есть, возможно, 1000 часов работы. * и к вашему сведению, я делаю полную переписку для следующей версии .... (в процессе)