ホームページ  >  記事  >  ウェブフロントエンド  >  Puppeteer の `page.evaluate` で返される空のオブジェクトを `querySelectorAll` で修正する方法

Puppeteer の `page.evaluate` で返される空のオブジェクトを `querySelectorAll` で修正する方法

Barbara Streisand
Barbara Streisandオリジナル
2024-11-18 09:31:02261ブラウズ

How to Fix Empty Object Returns in Puppeteer's `page.evaluate` with `querySelectorAll`?

Puppeteer で返される空のオブジェクトの解決 page.evaluate querySelectorAll

Puppeteer で、evaluate 関数を介して querySelectorAll メソッドを使用してドキュメント要素を取得しようとしています多くの場合、空のオブジェクトの配列が生成されます。これは、Puppeteer の操作中に発生する一般的な問題です。

これを解決するには、評価関数から返される値が JSON シリアル化可能である必要があることに注意することが重要です。提供された例の「title」要素のような複雑な要素を評価すると、結果のオブジェクトには関数などのシリアル化できない値が含まれます。

解決策は、JSON を返す前に要素から必要な情報を抽出することにあります。シリアル化可能な値。この場合、要素オブジェクト全体ではなく、要素から href 値を抽出することを目的としています。

以下に示すように評価関数を変更すると、href 値のリストを正常に取得できます。

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

これにより、戻り値が JSON シリアル化可能であることが保証され、結果配列内の空のオブジェクトの問題が解決されます。

以上がPuppeteer の `page.evaluate` で返される空のオブジェクトを `querySelectorAll` で修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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