我试着截取一个svg元素的屏幕截图,但是我只得到了一部分图片。我做错了什么?
'use strict';
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
try {
const page = await browser.newPage();
await page.goto('https://jisho.org/search/%E5%AE%B6%20%23kanji');
const selector = '#result_area > div > div:nth-child(2) > div.small-12.large-10.columns > div > div > div > svg';
await page.waitForSelector(selector);
const element = await page.$(selector);
await element.screenshot({
path: 'example.png',
});
} catch (e) {
console.log(e)
} finally {
await browser.close();
}
})();
1条答案
按热度按时间kcugc4gi1#
如果是我的话,我会直接保存SVG而不是转换成PNG,这样可以保留可伸缩性和原始数据,而不会降低质量,并且您以后可以随时转换成PNG。
但是如果您真的只想要PNG,并且想要纯粹的Puppeteer解决方案,那么问题是
overflow-x: hidden
CSS位于SVG的父容器上,并且整个页面布局使得截屏非常繁琐。因此,我只需要去掉所有的页面HTML,除了您感兴趣的一个元素。这使得它更容易捕获。