Я пытаюсь очистить ссылки со страницы, которая динамически генерирует контент, когда пользователь прокручивается вниз (бесконечная прокрутка). Я пробовал делать разные вещи с Phantomjs, но не смог собрать ссылки за первой страницей. Пусть говорят, что элемент внизу, который загружает контент, имеет класс .has-more-items
. Он доступен до тех пор, пока окончательный контент не будет загружен во время прокрутки, а затем будет недоступен в DOM (display: none). Вот что я пробовал -
- Настройка viewportSize на большую высоту сразу после
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('check for execution '); });
как есть, а также внутри 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";
Но ничего не работает.