中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用puppeteer怎么實現一個html截圖功能

發布時間:2021-04-07 16:20:10 來源:億速云 閱讀:306 作者:Leah 欄目:web開發

使用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截圖功能

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();
})();

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

依兰县| 沙河市| 无极县| 衡阳县| 鄂尔多斯市| 潜山县| 石城县| 东阿县| 阿克| 湄潭县| 丹江口市| 建平县| 维西| 林口县| 曲水县| 丹棱县| 保定市| 万盛区| 东乌珠穆沁旗| 司法| 台江县| 阿鲁科尔沁旗| 亚东县| 尼勒克县| 巴彦县| 湘潭市| 枝江市| 嘉黎县| 古蔺县| 中宁县| 波密县| 许昌县| 太康县| 虹口区| 阿克苏市| 阿勒泰市| 甘谷县| 蚌埠市| 兴城市| 县级市| 新邵县|