正如你所看到的,我添加了木偶师,我总是会犯错误。我试图使用getElementById函数来操纵我的html前端。
const puppeteer = require('puppeteer');
(async function getPrice(){
let URL= 'https://www.coingecko.com/en/coins/synthetix-network-token';
let browser = await puppeteer.launch();
let page = await browser.newPage();
await page.goto(URL, {waitUntil: 'networkidle2'});
let data = await page.evaluate(() => {
try {
let price=document.querySelector('div[class="text-3xl"] > span').innerText;
return {
price
}
}catch(err) {
reject(err.toString());
}})
console.log(Object.values(data));
document.getElementById("snxprice").innerHTML = Object.values(data);
await browser.close();
}().catch(function(error) {
console.error('Document is not defined!');
process.exit();
});发布于 2020-09-07 17:17:06
这一行:document.getElementById("snxprice").innerHTML = Object.values(data);在木偶师中无效。
每次需要DOM文档时都必须使用page.evaluate (您需要评估页面上下文),如下所示:
await page.evaluate(data => {
const element = document.querySelector('#snxprice')
element.innerHTML = Object.values(data)
}, data)注意:#snxprice很可能在iframe中,因为木偶师无法在页面中找到它。因此,您最终需要的是frame.evaluate。
https://stackoverflow.com/questions/63780375
复制相似问题