Memahami halaman Puppeteer.evaluate() QuerySelectorAll Returns Empty Objects
Kaedah Puppeteer's page.evaluate() ialah alat JavaScript yang berkuasa untuk melaksanakan penyemak imbas, membolehkan anda berinteraksi dengan elemen pada halaman dan mendapatkan semula maklumat. Walau bagaimanapun, kadangkala anda mungkin menghadapi isu di mana kaedah querySelectorAll() mengembalikan tatasusunan objek kosong.
Isu ini berpunca daripada fakta bahawa nilai yang dikembalikan daripada fungsi menilai mestilah boleh bersiri JSON. Elemen dan objek dokumen, seperti yang dikembalikan oleh querySelectorAll(), tidak boleh bersiri secara langsung.
Menyelesaikan Isu
Untuk menyelesaikan isu ini, adalah perlu untuk mengekstrak maklumat yang diingini daripada elemen dan hanya mengembalikan data boleh bersiri JSON. Dalam kes senarai pautan dari halaman, anda boleh mengubah suai kod seperti berikut:
await page.evaluate((sel) => { let elements = Array.from(document.querySelectorAll(sel)); let links = elements.map(element => { return element.href }) return links; }, sel);
Kod ini akan mengekstrak atribut href daripada setiap elemen dan mengembalikan tatasusunan rentetan, yang boleh menjadi JSON bersiri.
Atas ialah kandungan terperinci Mengapa `page.evaluate()` Puppeteer Dengan `querySelectorAll` Mengembalikan Objek Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!