#javascript #node.js #web-scraping #puppeteer
#javascript #node.js #очистка веб-страниц #кукловод
Вопрос:
Я пытаюсь щелкнуть по элементу, который перенаправляет меня на тот же веб-сайт, но, похоже, это не работает.
async function scrapeJobs(url, next) {
let browser = await puppeteer.launch({ headless: false });
let page = await browser.newPage();
await page.goto(url);
await Promise.all([
page.waitForSelector(next),
page.click(next),
page.waitForNavigation({ waitUntil: "load" }),
]);
await browser.close();
}
scrapeJobs(
"https://www.capgemini.com/fr-fr/carrieres/offres-emploi/?search_term=amp;filter_contract_type=stage",
".pagination__next"
);
Ответ №1:
Я предполагаю, что вам нужно разрешить waitForSelector
обещание, прежде чем нажимать на кнопку / ссылку. Это работает для меня:
async function scrapeJobs(url, next) {
let browser = await puppeteer.launch({ headless: false });
let page = await browser.newPage();
await page.goto(url);
const nextPage = await page.$(next);
if (nextPage) {
await Promise.all([
nextPage.click(),
page.waitForNavigation({ waitUntil: "load" }),
]);
}
await browser.close();
}
РЕДАКТИРОВАТЬ: Обещание.весь код выполняется параллельно, поэтому, вероятно, он пытается нажать кнопку «Далее», прежде чем она станет доступной.