@zlodiak

Как закрыть браузер парсера?

Для парсинга ссылок меню странички я использую фреймворк puppeteer. В результате ссылки выводятся в консоль, но после этого в консоль выводится следующее сообщение об ошибке:
(node:24126) UnhandledPromiseRejectionWarning: Error: Protocol error (Target.closeTarget): Target closed.
    at /home/md/.MINT18/code/js/puppeteer_books_1/node_modules/puppeteer/lib/Connection.js:74:56
    at new Promise (<anonymous>)
    at Connection.send (/home/md/.MINT18/code/js/puppeteer_books_1/node_modules/puppeteer/lib/Connection.js:73:12)
    at Page.close (/home/md/.MINT18/code/js/puppeteer_books_1/node_modules/puppeteer/lib/Page.js:1040:38)
    at Page.<anonymous> (/home/md/.MINT18/code/js/puppeteer_books_1/node_modules/puppeteer/lib/helper.js:112:23)
    at getSectionsLinks (/home/md/.MINT18/code/js/puppeteer_books_1/index.js:18:18)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
(node:24126) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:24126) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


Причина этой ошибке в строке, которая закрывает экземпляр браузера после завершения парсинга:
browser.close();

Помогите пожалуйста безболезненно закрыть браузер после парсинга. Вот полный код парсера:
const puppeteer = require('puppeteer');

const getSectionsLinks = async () => {
    const browser = await puppeteer.launch();
    const sectionsPage = await browser.newPage();			
    await sectionsPage.goto('https://grifbook.ru/products');

    const sectionLinks = await sectionsPage.evaluate(() => {
    	const links = [];
        const punkts = document.querySelectorAll('.catalog-menu .catalog-menu__item  a');
        punkts.forEach(punkt => {
        	links.push(punkt.getAttribute('href'));
        });
        return links;
    });

    sectionsPage.close(); 
    browser.close();
	return sectionLinks;
};


getSectionsLinks().then((sectionLinks) => {
    console.log(sectionLinks);
}).catch(function (error) {
    console.log("getSectionsLinks error", error);
});
  • Вопрос задан
  • 150 просмотров
Решения вопроса 1
@KingstonKMS
await    sectionsPage.close(); 
await    browser.close();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы