Я ищу:
- Открыть известный URL
(www.source.com/1 below)
- очистить все URL на этой странице
(e.g. www.urllookingfor.com/1 to .../10)
и войти в консоль - очиститьновый URL
(e.g. www.source.com/2)
с этой страницы - загрузите следующую страницу и повторите процесс X количество раз
Представьте себе список из 50 дивидендов URL-адресов на 5 страницах, где вам нужнонажмите кнопку next
, чтобы перейти на страницу.
Первые два шага работают нормально, но я думаю, что проблема в том, что nextLink
не обновляется до повторного запуска цикла.По сути, происходит то, что четвертый шаг повторяется с исходным URL, а не с «новым» URL.Вышеуказанные шаги выполняются в цикле if.
Я пытался использовать setTimeout
, async
... await
, так как я думаю, что проблема в том, что у него нет времени для загрузки 'Новый URL до завершения следующей функции, но это не сработало.
Если я добавлю console.log(URL)
в функцию if, будет напечатан исходный URL.Но когда я добавляю console.log
вне цикла if, он печатает обновленный URL, что заставляет меня думать, что nextLink не обновляется до окончания цикла if.
Я также пытался повторять функции снова и снова (по сути, повторяющийся оператор if), но это также, по-видимому, не обновляет «nextLink» до запуска следующей функции, что противоречит вышеприведенному.
let nextLink = www.source.com/1
//this pulls source page and scrapes required URLs
const getDatafromPage = () => {
request(nextLink, (error, response, html) => {
if((!error) && (response.statusCode == 200))
{
let $ = cheerio.load(html);
$('.class1').each((i, el) => {
let link = $(el).find('.class2').attr('href');
console.log(`${link});
})
}
})
}
//this gets the next URL
const getNextLink = () => {
request(nextLink, (error, response, html) => {
if((!error) && (response.statusCode == 200))
{
let $ = cheerio.load(html);
nextLink = $('.class3').attr('href');
}
})
}
for (let i = 0; i <= 4; i++) {
getDatafromPage();
getNextLink();
}
console.log(nextLink)
Ожидаемые результаты (все 50 URL-адресов со страниц и заканчиваются регистрацией последнего исходного URL-адреса)
www.urllookingfor.com/1
...
www.urllookingfor.com/50
www.source.com/5
Фактические результаты (повторяет первую страницу, но затем регистрирует следующую страницу в конце):
www.urllookingfor.com/1
...
www.urllookingfor.com/10
www.urllookingfor.com/1
...
www.urllookingfor.com/10
www.source.com/2