使用puppeteer怎么实现一个html截图功能

使用puppeteer怎么实现一个html截图功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

安装

直接运行安装命令:

npminstallpuppeteer

如果出现无法安装的问题,可以使用淘宝镜像。

puppeteer实现滑动截图

在我 puppeteer 使用截全屏的过程中发现有些图片无法截取到,而实际上是因为有些图片是懒加载的,如果你没有滑动到图片的位置,那么这个图片是不会加载。

现在我的方式是采用模拟浏览器滚动条滑动的方式滑动底部来使图片加载出来。

代码如下:

constpuppeteer=require('puppeteer');

(async()=>{
constbrowser=awaitpuppeteer.launch({
headless:false
});
constpage=awaitbrowser.newPage();
awaitpage.goto('https://www.cnblogs.com/morethink/p/6525216.html');
awaitpage.setViewport({
width:1200,
height:800
});

awaitautoScroll(page);

awaitpage.screenshot({
path:'1.png',
fullPage:true
});

awaitbrowser.close();
})();


functionautoScroll(page){
returnpage.evaluate(()=>{
returnnewPromise((resolve,reject)=>{
vartotalHeight=0;
vardistance=100;
vartimer=setInterval(()=>{
varscrollHeight=document.body.scrollHeight;
window.scrollBy(0,distance);
totalHeight+=distance;
if(totalHeight>=scrollHeight){
clearInterval(timer);
resolve();
}
},100);
})
});
}

动图如下:

使用puppeteer怎么实现一个html截图功能

puppeteer 实现 html element 截图

在某些情况下我们只想要针对html的某个位置进行截图而不是针对页面截全屏。

puppeteer提供了ElementHandle.screenshot 方法,该方法参数和page.screenshot 一样。而ElementHandle 对象是页面内的Dom对象。可以帮助我对 html element进行截图。这样的话你想截取页面的哪部分就截取页面的哪部分。

代码如下:

constpuppeteer=require('puppeteer');

(async()=>{
constbrowser=awaitpuppeteer.launch({
headless:false
});
constpage=awaitbrowser.newPage();
awaitpage.goto('https://www.cnblogs.com/morethink/p/6525216.html');
awaitpage.setViewport({
width:1200,
height:800
});
//获取页面Dom对象
letbody=awaitpage.$('#cnblogs_post_body');
//调用页面内Dom对象的screenshot方法进行截图
awaitbody.screenshot({
path:'2.png'
});
awaitbrowser.close();
})();

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注恰卡编程网行业资讯频道,感谢您对恰卡编程网的支持。

发布于 2021-04-08 13:36:44
收藏
分享
海报
0 条评论
165
上一篇:如何在jQuery中自定义属性data-val 下一篇:如何在springboot中对druid连接池进行配置
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码