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

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

Patricia Arquette
リリース: 2024-11-13 13:50:02
オリジナル
259 人が閲覧しました

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

page.evaluate querySelectorAll によって返される予期しない空のオブジェクト配列

QuerySelectorAll で Puppeteer の page.evaluate 関数を利用すると、ユーザーは次の問題に遭遇する可能性があります。返された配列には空が含まれていますobject.

原因:

page.evaluate 関数から返される値は、JSON シリアル化可能である必要があります。デフォルトでは、HTML 要素は変更を加えなければ JSON シリアル化できません。

解決策:

この問題を解決するには、HTML 要素から抽出されたデータを JSON に変更する必要があります。シリアル化可能な形式。たとえば、必要なデータが要素の href 値である場合、次のコード スニペットを使用できます。

await this.page.evaluate((sel) => {
    let elements = Array.from(document.querySelectorAll(sel));
    let links = elements.map(element => {
        return element.href;
    });
    return links;
}, sel);
ログイン後にコピー

このコードは要素から href 値を抽出し、文字列の配列として返します。これは JSON でシリアル化可能です。戻り値を変更することで、空のオブジェクトの問題を回避できます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート