使用puppeteer怎么實現一個html截圖功能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
目前創新互聯已為成百上千的企業提供了網站建設、域名、虛擬空間、成都網站托管、企業網站設計、寧明網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
安裝
直接運行安裝命令:
npm install puppeteer
如果出現無法安裝的問題,可以使用淘寶鏡像。
puppeteer實現滑動截圖
在我 puppeteer 使用截全屏的過程中發現有些圖片無法截取到,而實際上是因為有些圖片是懶加載的,如果你沒有滑動到圖片的位置,那么這個圖片是不會加載。
現在我的方式是采用模擬瀏覽器滾動條滑動的方式滑動底部來使圖片加載出來。
代碼如下:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); await page.goto('https://www.cnblogs.com/morethink/p/6525216.html'); await page.setViewport({ width: 1200, height: 800 }); await autoScroll(page); await page.screenshot({ path: '1.png', fullPage: true }); await browser.close(); })(); function autoScroll(page) { return page.evaluate(() => { return new Promise((resolve, reject) => { var totalHeight = 0; var distance = 100; var timer = setInterval(() => { var scrollHeight = document.body.scrollHeight; window.scrollBy(0, distance); totalHeight += distance; if (totalHeight >= scrollHeight) { clearInterval(timer); resolve(); } }, 100); }) }); }
動圖如下:
puppeteer 實現 html element 截圖
在某些情況下我們只想要針對html的某個位置進行截圖而不是針對頁面截全屏。
puppeteer提供了ElementHandle.screenshot 方法,該方法參數和page.screenshot 一樣。而ElementHandle 對象是頁面內的Dom對象。可以幫助我對 html element進行截圖。這樣的話你想截取頁面的哪部分就截取頁面的哪部分。
代碼如下:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: false }); const page = await browser.newPage(); await page.goto('https://www.cnblogs.com/morethink/p/6525216.html'); await page.setViewport({ width: 1200, height: 800 }); //獲取頁面Dom對象 let body = await page.$('#cnblogs_post_body'); //調用頁面內Dom對象的 screenshot 方法進行截圖 await body.screenshot({ path: '2.png' }); await browser.close(); })();
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯的支持。
網站名稱:使用puppeteer怎么實現一個html截圖功能
本文地址:http://vcdvsql.cn/article18/podidp.html
成都網站建設公司_創新互聯,為您提供手機網站建設、網站設計公司、動態網站、微信公眾號、面包屑導航、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯