Я много времени думал об этом и пробовал разные вещи сейчас. Я хочу очистить веб-страницу несколькими страницами, но страница не перезагружается при смене страницы. Вместо этого некоторые данные контейнера изменяются на каждой измененной странице. Самое сложное, что нужно сделать, это знать, когда нажимать кнопку следующей страницы.
Кто-то может подумать, что это довольно легко, и я подумал о том же и начал с:
$('.pagn a').each(function() {
console.log(`Loop counter`)
$(this).click()
//Code to scrape the new page
})
Теперь l oop запускается 13 раз, но изменяется только одна страница. Это происходит потому, что сама нумерация страниц находится внутри контейнера, который перезагружается, поэтому все остальные нажатия кнопок в основном игнорируются.
Для решения этой проблемы мне потребовалась какая-то проверка, которая проверяет, что новый контент был загружен перед продолжением, но если Я пытаюсь сделать что-то вроде:
$('.pagn a').each(function() {
console.log(`Loop counter`)
while (someConditionToCheckIfPageLoaded) {
}
$(this).click()
//Code to scrape the new page
})
Это было бы бесконечно l oop, потому что JavaScript является однопоточным и код для изменения условия никогда не срабатывает.
Я также попробовал это, что я теперь знаю, это неправильно.
Индикатор загружаемой страницы, если URL кнопки соответствует URL страницы.
$('.pagn a').each(function() {
let visitedURL = [];
if ($(this).attr('data-url')) {
let button = $(this)
buttonURL = "https://www.ebay.com/myb/PurchaseHistory#" + $(this).attr('data-url');
(function wait() {
button.click()
if (buttonURL == location.href && !visitedURL.includes(button.html())) {
console.log(button.html())
button.click()
visitedURL.push(button.html())
console.log(buttonURL);
console.log(location.href);
//Scrape page
} else {
setInterval(wait, 5000);
}
})();
}
})
Это также меняет только одну страницу.
Если кто-то смог очистить веб-страницы несколькими страницами с помощью JavaScript, пожалуйста, дайте мне знать, как.
Edit1:
Кроме того, я не уверен, почему это создает бесконечное число. oop, а также:
let glbElements = []
$('.pagn a').each(function() {
glbElements.push($(this))
})
for(let i = 0 ; i<glbElements.length; i++){
console.log(`Loop Counter`)
setTimeout(function(){
console.log(`Inside SetTimeout`)
glbElements[i].click()
glbElements.splice(i,1)
},2000)
}
Счетчик Лоппа * 5 Внутри SetInterval - Сохраняет печать