我正在寻找有关无头浏览器内幕发生情况的更多信息。过去,我一直在使用slimmerJS,Phantom.js和Headless Chrome等不同的无头浏览器,目的是在不同的站点截屏。
我从来没有生成过逼真的,清晰的图像,就像您在浏览器中看到的那样,它看起来像一个工具的限制,这就是您可以从中获得的最高质量,但是我想了解为什么以及可能如何使其变得更好。
请比较以下示例。
如果您将真实网站与屏幕截图进行比较,则可以看到图像是如何模糊的。在此示例中,它只是图像,但是HTML文本也会发生这种情况。
现在,如果我要使用计算机(无论是Windows,Mac,Linux)来截取屏幕截图,我都会得到质量非常好的屏幕快照,完全看起来像是真正的交易。
那为什么会发生呢?我尝试了所有标准的操作,例如在每个库中设置具有最高质量的屏幕截图,并设置足够大的视口,以使屏幕截图具有不错的分辨率。这真的是您从无头的浏览器屏幕截图中可以获得的最高质量吗?
任何对此领域的启示将不胜感激。谢谢!
答案 0 :(得分:10)
将deviceScaleFactor设置为2(又称模拟视网膜),您将获得更好的结果:
(async () => {
const browser = await puppeteer.launch({ headless: false })
const page = await browser.newPage();
await page.setViewport({width: 800, height: 800, deviceScaleFactor: 2});
await page.goto('https://en.wikipedia.org/wiki/Main_Page')
await page.screenshot({ fullPage: true, path: 'test.png' })
})();
如您所见,您可以获得非常不错的结果: