Ich versuche, eine Variable in Puppeteer an eine page.evaluate()
Funktion zu übergeben , aber wenn ich das folgende sehr vereinfachte Beispiel verwende, ist die Variable undefiniert.evalVar
Ich bin neu bei Puppeteer und kann keine Beispiele finden, auf denen ich aufbauen kann. Daher benötige ich Hilfe beim Übergeben dieser Variablen an die page.evaluate()
Funktion, damit ich sie im Inneren verwenden kann.
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
Katze Burston
quelle
quelle
Evaluation failed: TypeError: func is not a function
.. Warum?evalVar
sowohl die Signatur des Funktionsarguments als auch ein übergebenes Argument anevaluate
(am Ende des Codebeispiels) einzugeben.pate.evaluate()
. Sie können es angeblich mit "belichten"page.exposeFunction
. Weitere Informationen finden Sie unter stackoverflow.com/a/58040978 .Ich ermutige Sie, an diesem Stil festzuhalten, da er bequemer und lesbarer ist .
quelle
Einzelne Variable:
Sie können passieren eine Variable zu
page.evaluate()
mit folgenden Syntax:Mehrere Variablen:
Sie können passieren mehrere Variablen zu
page.evaluate()
mit folgenden Syntax:quelle
Es dauerte eine ganze Weile, um das herauszufinden
console.log()
inevaluate()
nicht in Knoten Konsole anzeigen kann.Ref: https://github.com/GoogleChrome/puppeteer/issues/1944
Hoffe das kann helfen.
quelle
Für Pass a
function
gibt es zwei Möglichkeiten.Sie können
devtools: true
die Startoptionen für den Test hinzufügenquelle
yourFunc
Objekt ersetzen, wenn Ihre Eigenschaft keine Funktion ist. @ TramadaIch habe ein Typoskript-Beispiel, das jemandem helfen könnte, der neu in Typoskript ist.
quelle
puppeteer
in Typoskript? Transpilieren Sie jedes Mal, wenn Sie Ihren Code ändern, zu js?Mit Seite. $$ eval
[Siehe auch auf Seite. $ eval für einen einzelnen Selektor]
quelle