Saya mencoba untuk memasukkan variabel ke dalam page.evaluate()
fungsi Puppeteer , tetapi ketika saya menggunakan contoh yang sangat disederhanakan berikut, variabel evalVar
tidak terdefinisi.
Saya baru mengenal Puppeteer dan tidak dapat menemukan contoh untuk dikembangkan, jadi saya butuh bantuan untuk meneruskan variabel itu ke dalam page.evaluate()
fungsi sehingga saya dapat menggunakannya di dalam.
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
const evalVar = 'WHUT??';
try {
await page.goto('https://www.google.com.au');
await page.waitForSelector('#fbar');
const links = await page.evaluate((evalVar) => {
console.log('evalVar:', evalVar); // appears undefined
const urls = [];
hrefs = document.querySelectorAll('#fbar #fsl a');
hrefs.forEach(function(el) {
urls.push(el.href);
});
return urls;
})
console.log('links:', links);
} catch (err) {
console.log('ERR:', err.message);
} finally {
// browser.close();
}
})();
javascript
web-scraping
evaluate
puppeteer
Kucing Burston
sumber
sumber
Evaluation failed: TypeError: func is not a function
.. Mengapa?evalVar
keduanya dalam tanda tangan argumen fungsi, dan sebagai argumen yang diteruskan keevaluate
(di akhir contoh kode).pate.evaluate()
. Anda seharusnya bisa 'mengeksposnya' denganpage.exposeFunction
. Untuk selengkapnya, lihat stackoverflow.com/a/58040978 .Saya mendorong Anda untuk tetap menggunakan gaya ini, karena lebih nyaman dan mudah dibaca .
sumber
Variabel Tunggal:
Anda dapat memberikan satu variabel untuk
page.evaluate()
menggunakan sintaks berikut:Variabel Ganda:
Anda dapat memberikan beberapa variabel untuk
page.evaluate()
menggunakan sintaks berikut:sumber
Butuh waktu cukup lama bagi saya untuk mengetahui bahwa
console.log()
inevaluate()
tidak dapat ditampilkan di konsol node.Ref: https://github.com/GoogleChrome/puppeteer/issues/1944
Semoga ini bisa membantu.
sumber
Untuk lulus a
function
, ada dua cara yang bisa dilakukan.Anda dapat menambahkan
devtools: true
ke opsi peluncuran untuk pengujiansumber
yourFunc
dengan objek jika properti Anda bukan fungsi. @tramadaSaya memiliki contoh ketikan yang dapat membantu orang baru dalam naskah ketikan.
sumber
puppeteer
naskah ketikan? Apakah Anda mentranspilasi ke js setiap kali Anda mengubah kode?Dengan halaman. $$ eval
[lihat juga di halaman. $ eval untuk satu pemilih]
sumber