Код: Выделить всё
import puppeteer from "puppeteer";
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
page.setDefaultNavigationTimeout(10 * 60 * 1000);
await page.goto("https://.../");
await page.setViewport({ width: 1080, height: 1024 });
function delay(time) {
return new Promise(function(resolve) {
setTimeout(resolve, time)
});
}
const extractDataFromPage = async () => {
// Select all question containers
const containers = await page.$$("#examQuestions > .container");
for (const container of containers) {
try {
const question = await container.$eval("#questionText", (el) =>
el.textContent.trim()
);
const answers = await container.$$eval(
".answers-container .answer-box",
(answerBoxes) => answerBoxes.map((box) => box.textContent.trim())
);
const correctAnswerIndex = await container.$eval(
"#answersbutton button[data-correct-answer]",
(button) => parseInt(button.getAttribute("data-correct-answer"), 10)
);
const correctAnswer = answers[correctAnswerIndex - 1];
const imageSrc = await container
.$eval(".image-container img", (img) => img.getAttribute("src"))
.catch(() => null);
const imageURL = imageSrc ? `https:/.../${imageSrc}` : null;
console.log({
question,
answers,
correctAnswer,
imageURL,
});
} catch (error) {
console.error("Error processing container:", error);
}
}
await delay(5000)
};
// Process each page
const totalPages = 55;
for (let currentPage = 1; currentPage
Подробнее здесь: [url]https://stackoverflow.com/questions/79361923/puppeteer-target-close-crash-at-random-points[/url]