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

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

DDD
DDDオリジナル
2024-11-22 06:49:17650ブラウズ

Why does Puppeteer's `page.evaluate` return empty objects with `querySelectorAll`?

Puppeteer が QuerySelectorAll を評価して空のオブジェクトを返す

Puppeteer の page.evaluate 関数を使用して querySelectorAll でページ要素をクエリすると、次の問題が発生する可能性があります。返された配列には空のオブジェクトが含まれています。これは、JavaScript オブジェクトが本質的に JSON シリアル化できないために発生します。

考えられる解決策の 1 つは、要素から特定のデータを抽出し、JSON にシリアル化できるようにすることです。たとえば、要素の href 属性に興味がある場合は、コードを次のように変更できます。

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

このコードは、選択した要素の href 属性を表す文字列の配列を返します。簡単にシリアル化して印刷できます。

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

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