Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Membetulkan Pemulangan Objek Kosong dalam `page.evaluate` Puppeteer dengan `querySelectorAll`?

Bagaimana untuk Membetulkan Pemulangan Objek Kosong dalam `page.evaluate` Puppeteer dengan `querySelectorAll`?

Barbara Streisand
Barbara Streisandasal
2024-11-18 09:31:02265semak imbas

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

Menyelesaikan Pemulangan Objek Kosong dalam halaman Puppeteer.evaluate querySelectorAll

Dalam Puppeteer, cuba untuk mendapatkan semula elemen dokumen menggunakan kaedah querySelectorAll melalui kaedah penilaian selalunya membawa kepada susunan objek kosong. Ini ialah isu biasa yang dihadapi semasa bekerja dengan Puppeteer.

Untuk menyelesaikan masalah ini, adalah penting untuk ambil perhatian bahawa nilai yang dikembalikan daripada fungsi penilaian mestilah boleh bersiri JSON. Apabila menilai elemen kompleks seperti elemen 'tajuk' dalam contoh yang disediakan, objek yang terhasil mengandungi nilai tidak boleh bersiri, seperti fungsi.

Penyelesaian terletak pada mengekstrak maklumat yang dikehendaki daripada elemen sebelum mengembalikan JSON- nilai boleh bersiri. Dalam kes ini, kami menyasarkan untuk mengekstrak nilai href daripada elemen dan bukannya keseluruhan objek elemen.

Dengan mengubah suai fungsi penilaian seperti yang dilihat di bawah, anda boleh berjaya mendapatkan semula senarai nilai href:

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

Ini memastikan bahawa nilai yang dikembalikan boleh bersiri JSON dan menyelesaikan isu objek kosong dalam tatasusunan hasil.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Pemulangan Objek Kosong dalam `page.evaluate` Puppeteer dengan `querySelectorAll`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn