0

以下命令在 Devtools 控制台中按预期工作(例如,这里 - https://news.ycombinator.com/

$x('//a[@class="storylink"]')(边缘浏览器)

但是下面的代码:

            const page = await browser.newPage();
            await page.goto("https://news.ycombinator.com/");
            let urls = await page.evaluate(() => {
                var item = document.evaluate(
                    '//a[@class="storylink"]',
                    document,
                    null,
                    XPathResult.FIRST_ORDERED_NODE_TYPE,
                    null
                ).singleNodeValue;
                return item
            })
            browser.close(); 

返回一个空对象:{}. 同样的情况也发生在其他所有网站上。为什么会这样?

4

1 回答 1

1

如果您是来自 Node.js 的带有 Puppeteer 的自动 Chrome,那么page您已经公开了$xXPath 评估方法的对象,请参阅https://pptr.dev/#?product=Puppeteer&version=v10.4.0&show=api-pagexexpression。这意味着做

let urls = await page.$x('//a[@class="storylink"]')

应该足够了。

于 2021-10-12T12:43:05.170 回答