#url #click #puppeteer
#url #нажмите #кукловод
Вопрос:
Привет, у меня есть следующий код, у меня ошибка, говорящая, что sublink.click не является функцией. Я пытаюсь получить URL-адреса со страницы (я сделал это), а затем нажимаю на каждый URL-адрес и внутри этого URL получаю информацию о других. Может ли кто-нибудь мне помочь?
'use strict';
const puppeteer = require('puppeteer');
crawlPage();
function crawlPage() {
(async () => {
const args = [
"--disable-setuid-sandbox",
"--no-sandbox",
"--blink-settings=imagesEnabled=false",
];
const options = {
args,
headless: true,
ignoreHTTPSErrors: true,
};
const browser = await puppeteer.launch(options);
const page = await browser.newPage();
await page.goto("https://www.guiadacarreira.com.br/profissao/lista-de-profissoes/", {
waitUntil: 'networkidle2',
timeout: 30000
});
let hrefs = await page.$$eval('a', as => as.map(a => a.href));
console.log("DOID");
// peguei os urls
//let's click on each sub click
for (let sublink of hrefs) {
console.log('██AAA');
const [response] = await Promise.all([
page.waitForNavigation(),
sublink.click('guia', {delay: 100}),
]);
console.log('██BBB');
const resultado = await sublink.evaluate(() => {
return document.querySelector("body > div.container.gc-master-container > div:nth-child(3) > main > article > div.gc-post-body").firstChild.value;
});
// await page.goBack()
break;
}
})().catch((error) => {
console.error(error);
});;
}
Ответ №1:
Он не щелкает и возвращает, sublink.click is not a function
потому что sublink
это строка, содержащая URL. В строке let hrefs = await page.$$eval('a', as => as.map(a => a.href));
вы возвращаете массив строк, а не элементы. Если вы хотите иметь элементы, вам нужно использовать что-то вроде let hrefElements = await page.$$('a');
Комментарии:
1. ДА. Вот и все. Теперь у меня другая проблема. «ReferenceError: resultado не определен» Каким-то образом resultado не получает правильную информацию. Я буду работать над решением. Спасибо