Кукольник. Page.evluate () не работает или не получает результатов - PullRequest
0 голосов
/ 26 января 2019

Я пытаюсь запустить очень простой пример Pupeteer.Но в методе page.evalute () просто ничего не происходит, ни ошибок, ни результата.Что я делаю не так?

const puppeteer = require("puppeteer");
    module.exports = class zrGrabber {
        async startGrabbing() {
            try {
                const browser = await puppeteer.launch();
                const page = await browser.newPage();
                await page.goto('https://www.zr.ru/news/avtomobili/');
                await page.evaluate(() => {
                    const links = document.querySelectorAll(`div.head > h2 > a`)
                    console.log(links)
                });
                browser.close();
            } catch (err) {
                console.log(err)
            }
        }
    }

и вот как он работает на узле:

const http = require('http');
const port = 3000;
const cron = require('node-cron');
const zrGrabber = require('./grabbers/zr.grabber');

const requestHandler = (request, response) => {
    response.end('Hello Node.js Server!')
}
const server = http.createServer(requestHandler)
server.listen(port, (err) => {
    cron.schedule('* * * * *', async () => {
        const zr = new zrGrabber();
        await zr.startGrabbing();
    });
    if (err) {
        return console.log('something bad happened', err)
    }
    console.log(`server is listening on ${port}`)
})

1 Ответ

0 голосов
/ 26 января 2019

console.log(links) выполняется в контексте страницы, поэтому links выводится в консоли браузера (это можно увидеть, если запустить Chrome в видимом режиме и открыть DevTools перед закрытием браузера). Если вам нужно, чтобы это было выведено в консоли процесса Node.js, вам нужно вернуть сериализуемое значение, получить его и управлять им в контексте Node.js:

                const links = await page.evaluate(() => {
                    const links = document.querySelectorAll(`div.head > h2 > a`);
                    return [...links].map(link => link.href);
                });
                console.log(links);
                browser.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...