Пытаясь обрабатывать неограниченную прокрутку на Twitter, страница, похоже, не загружает динамический контент, даже если я прокручиваю на дно.Как обращаться с неограниченной прокруткой/динамической загрузкой с помощью CasperJS (PhantomJS) на Twitter
Я делаю быстрый тест, чтобы увидеть, если содержание даже нагрузки с помощью следующего кода:
casper.open('https://twitter.com/<account>', function() {
this.evaluate(function() {
window.scrollTo(0, document.body.scrollHeight);
});
this.capture('twitter-screenshot.png');
});
и скриншот кажется, что он будет загружен весь видовой экран, даже если я установить видовой экран для casper.options.viewportSize = { width: 1400, height: 600 };
Я проверил количество последователей на фактическом браузере, а число на CasperJS точно такое же, как начальный номер, загруженный до перехода вниз. Так или:
- Это не вызывает динамическую нагрузку на прокрутку, потому что весь видовой экран загружен, поэтому нет прокрутки.
- Свиток не срабатывает должным образом.
- Что-то я полностью отсутствует
Я прочитал, что функция скриншот фактически скриншоты весь DOM и на самом деле не так, как в настоящее время окна просмотра. Я добрался до этого момента всадником/зомби/казусом/фантом и никогда не получил прокрутку для правильной работы. Любые подсказки были бы замечательными.
Редактировать 1: Используя код Vaviloff на чистом phantomJS, я все еще вижу те же ошибки. Это терминал вывода:
Writing twitter-1.png...
[1] top = 10064
Writing twitter-2.png...
[2] top = 10064
Writing twitter-3.png...
[3] top = 10064
Writing twitter-4.png...
[4] top = 10064
Writing twitter-5.png...
[5] top = 10064
Я заметил, что только twitter-1.png
записывается в моей файловой системе, и это невероятно долго в высоту. Моя высота окна просмотра установлена в 900
перед вызовом page.open()
.
Должен добавить, что я тестировал на Windows 10
и OSX Yosemite
с phantomJS 2.1.1
, установленным через npm.
Редактировать 2: Похоже, что есть проблема, потому что я сначала зашел в свою тестовую учетную запись.
Edit 3: При входе в твиттер, он запускает дополнительные скрипты и phantomJS не совместим и выдает эту ошибку TypeError: undefined is not a constructor (evaluating 't.canPlayType(e)')
. Это убьет всех JS на странице. Не знаете, как обойти это.
Да, скриншоты будут длинными, потому что PhantomJS отображает полную высоту страницы, это по дизайну программы. Скриншоты будут отличаться по высоте, потому что разные твиты будут иметь разную высоту. ** Редактировать 1 ** Пожалуйста, добавьте обратный вызов 'page.onError', чтобы проверить наличие ошибок. ** Редактировать 3 **, вероятно, проблема для другого вопроса. – Vaviloff