Я считаю, что есть несколько способов достижения этого решения, но в основном вам нужно выполнить все axios
и проанализировать все из них с помощью Cheerio программно.
Если вы знаете, сколько страниц вы хотите очистить
Вы можете создать простые for
l oop и pu sh все функции axios
в массиве один за другим с созданными URL-адресами. Затем вы можете вызвать их с помощью Promise.all
const promises = [];
for(let page = 0; page <= 5; page ++){
promises.push(
axios({method: "get",url:`https://example.com?page=${page}`})
.then(res => {
// Parse your result with Cheerio or whatever you like
})
);
}
// You can pass the responses on this resolve if you want.
Promise.all(promises).then(...)
Если вы очищаете страницу списка, а общее число страниц неизвестно
Затем вы можете создать асинхронную / рекурсивную функцию для отправки запроса. с axios
и условно повторять. Таким образом, вы также можете уменьшить максимальное использование памяти при сравнении с решением ниже. И это будет медленнее, потому что запросы не будут параллельными.
// The function below is kind-of pseudo code so don't try to copy/paste it :)
const dispatchRequest = (page) => {
const response = axios({url: `https://example.com?page=${page}`});
// Ex: You can parse the response here with Cheerio and check if pagination is not disable
if(something){
return dispatchRequest(page+1);
}
else{
return response;
}
}
Решения, приведенные выше, конечно, имеют свои недостатки. Если вы заблокированы целевым веб-сайтом или ваш запрос не выполнен, у вас нет шансов повторить тот же запрос или повернуть прокси, чтобы обойти безопасность целевых веб-сайтов.
Я бы предложил вам внедрить queue
и поместить все функции отправки запросов туда. Таким образом вы можете обнаруживать сбои / проблемы и снова ставить ошибочные запросы в очередь. Вы также можете реализовать оба вышеупомянутых решения с поддержкой queue
. Вы можете запустить его параллельно и намного лучше управлять своей памятью / процессором.
Также вы можете использовать SDK. Я видел, что есть несколько чистящих SDK, которые предоставляют вам весь этот набор инструментов, так что вы не будете изобретать велосипед заново.