ホームページ  >  記事  >  ウェブフロントエンド  >  「querySelectorAll」を使用すると「page.evaluate」が空のオブジェクトを返すのはなぜですか?

「querySelectorAll」を使用すると「page.evaluate」が空のオブジェクトを返すのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-13 13:50:02207ブラウズ

Why Does `page.evaluate` Return Empty Objects When Using `querySelectorAll`?

Unexpected Empty Object Array Returned by page.evaluate querySelectorAll

When utilizing Puppeteer's page.evaluate function with querySelectorAll, users may encounter an issue where the returned array contains empty objects.

Cause:

The values returned from the page.evaluate function must be JSON serializable. By default, HTML elements are not JSON serializable without modifications.

Solution:

To resolve this issue, the extracted data from the HTML elements should be modified to a JSON serializable format. For instance, if the desired data is the href values of the elements, the following code snippet can be used:

await this.page.evaluate((sel) => {
    let elements = Array.from(document.querySelectorAll(sel));
    let links = elements.map(element => {
        return element.href;
    });
    return links;
}, sel);

This code extracts the href values from the elements and returns them as an array of strings, which is JSON serializable. By modifying the returned values, the issue of empty objects can be avoided.

以上が「querySelectorAll」を使用すると「page.evaluate」が空のオブジェクトを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。