Как прокрутить вниз с Phantomjs для загрузки динамического контента
Я пытаюсь очистить ссылки со страницы, которая динамически генерирует контент, когда пользователь прокручивает страницу вниз (бесконечная прокрутка). Я пытался делать разные вещи с Phantomjs, но не смог собрать ссылки за пределами первой страницы. Допустим, элемент внизу, который загружает контент, имеет класс.has-more-items
, Он доступен до тех пор, пока во время прокрутки не будет загружен конечный контент, а затем станет недоступен в DOM (отображение: нет). Вот что я пробовал
var page = require('webpage').create();
page.viewportSize = {ширина: 1600, высота: 10000,};
С помощьюpage.scrollPosition = { top: 10000, left: 0 }
внутриpage.open
но не имеют никакого эффекта, как-page.open('http://example.com/?q=houston', function(status) {
if (status == "success") {
page.scrollPosition = { top: 10000, left: 0 };
}
});
Также попытался положить его внутрьpage.evaluate
функция, но это даетОшибка ссылки: не удается найти переменную страницу
Попробовал использовать JQuery и JS-код внутриpage.evaluate
а такжеpage.open
но безрезультатно$ ("html, body"). animate ({scrollTop: $ (document) .height ()}, 10, function () {//console.log( 'проверка на выполнение');});
как есть, так и внутриdocument.ready
, Аналогично для кода JS
window.scrollBy(0,10000)
как есть, так и внутриwindow.onload
Я действительно поражен этим в течение 2 дней и не в состоянии найти способ. Любая помощь или подсказка будет принята с благодарностью.
Обновить
Я нашел полезную часть кода наhttps://groups.google.com/forum/?fromgroups=#!topic/phantomjs/8LrWRW8ZrA0
var hitRockBottom = false; while (!hitRockBottom) {
// Scroll the page (not sure if this is the best way to do so...)
page.scrollPosition = { top: page.scrollPosition + 1000, left: 0 };
// Check if we've hit the bottom
hitRockBottom = page.evaluate(function() {
return document.querySelector(".has-more-items") === null;
}); }
где.has-more-items
класс элемента, к которому я хочу получить доступ, который изначально доступен внизу страницы, и когда мы прокручиваем вниз, он перемещается дальше вниз, пока все данные не будут загружены, а затем станет недоступным.
Тем не менее, когда я тестировал, стало ясно, что он работает в бесконечных циклах без прокрутки вниз (я рендеринг изображений для проверки). Я пытался заменитьpage.scrollPosition = { top: page.scrollPosition + 1000, left: 0 };
также с кодами снизу (по одному за раз)
window.document.body.scrollTop = '1000';
location.href = ".has-more-items";
page.scrollPosition = { top: page.scrollPosition + 1000, left: 0 };
document.location.href=".has-more-items";
Но ничего не работает.