如何使用Puppeteer截取表格的屏幕截图?

3

我试图使用Puppeteer来获取商品和股票价格的截屏,这个网站是这个。我想要截取的类是.trigo,但我想要先删除.abas。唯一让它正常工作的方法是像这样操作:

await page.goto('https://www.canalrural.com.br/cotacao/soja/', {waitUntil: 'networkidle2'});
await page.setViewport({width: 800, height: 1640});
await page.$eval('div.trigo > div > div:nth-child(3) > h3', (el) => el.scrollIntoView());
await page.screenshot({
    path: folder + '02 - soja.jpg',
    type: 'jpeg',
    quality: 70
});

但是每次我检查视口的高度时都会改变(因为他们在表格中输入新信息)... 最好的方法是获取 .trigo 类内容,删除 .abas 类并截屏?谢谢大家。


类似问题的这个答案提供了一个值得考虑的稍微不同的方法。 - arthurakay
1个回答

1
您可以使用“evaluate”表达式来删除元素。
await page.evaluate(() => document.getElementById("abas").remove());

然后,您可以获取元素.trigo并在该元素上调用screenshot

var el = await page.$('.trigo');
await el.screenshot({
    path: folder + '02 - soja.jpg',
    type: 'jpeg',
    quality: 70
});


(node:4756) UnhandledPromiseRejectionWarning: TypeError: el.screenshot is not a functionWith the code:await page.evaluate(() => document.getElementsByClassName("abas")[0].remove()); var el = page.$('.algodao'); await el.screenshot({ path: folder + '00 - dolar.jpg', type: 'jpeg', quality: 70 });``` - FIM
1
我在page.$中忘记了await。 - hardkoded
1
不可思议 - FIM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接