Я хотел бы знать, как использовать $$ eval от Puppeteer - PullRequest
0 голосов
/ 28 декабря 2018

Я не могу хорошо использовать $$ eval.

(async() => {
    const browser = await puppeteer.launch({ executablePath: chrome ,args: [chromeArgs]});
    const page = await browser.newPage();
    await page.goto('https://www.example.com/', {waitUntil: "domcontentloaded"});
    var links = await page.evaluate(() => {
        var hreflist = [];
        var tags = document.querySelectorAll("p");
        Array.prototype.forEach.call(tags, (tag)=>{
            hreflist.push(tag.textContent);
        });
        return hreflist;
    });
    console.log(util.inspect(links, false, null));
    browser.close();
})();

Я хотел бы сделать то же самое, что и исходный код, написанный выше.

(async() => {
    const browser = await puppeteer.launch({ executablePath: chrome ,args: [chromeArgs]});
    const page = await browser.newPage();
    await page.goto('https://www.example.com/', {waitUntil: "domcontentloaded"});

    var links = await page.$$eval('p', list => {
        list.map(data => {
            data.textContent
        })
    });

    console.log(util.inspect(links, false, null));
    browser.close();
})();

Результат выполнения $$ eval () не определено.

https://pptr.dev/#?product=Puppeteer&version=v1.10.0&show=api-pageevalselector-pagefunction-args Я видел официальный документ.Тем не менее, мы не можем подтвердить проблему.

1 Ответ

0 голосов
/ 28 декабря 2018

Вы забыли вернуть значение.это будет работать

var links = await page.$$eval('p', list => list.map(data => data.textContent));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...