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

Puppeteer の `page.evaluate()` と `querySelectorAll` が空のオブジェクトを返すのはなぜですか?

DDD
リリース: 2024-11-11 18:38:02
オリジナル
888 人が閲覧しました

Why Does Puppeteer's `page.evaluate()` With `querySelectorAll` Return Empty Objects?

Puppeteer の page.evaluate() について QuerySelectorAll は空のオブジェクトを返す

Puppeteer の page.evaluate() メソッドは、内部で JavaScript を実行するための強力なツールです。ブラウザーを使用して、ページ上の要素を操作して情報を取得できるようにします。ただし、querySelectorAll() メソッドが空のオブジェクトの配列を返すという問題が発生する場合があります。

この問題は、評価関数から返される値が JSON シリアル化可能である必要があるという事実に起因します。 querySelectorAll() によって返される要素やドキュメント オブジェクトなどは、直接シリアル化できません。

問題の解決

この問題を解決するには、要素から必要な情報を取得し、JSON シリアル化可能なデータのみを返します。ページからのリンクのリストの場合、コードを次のように変更できます。

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

このコードは、各要素から href 属性を抽出し、文字列の配列 (JSON にすることもできます) を返します。連載中。

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

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