diff --git a/capture.js b/capture.js index 5d1bb3c113d5426b3bb858503c23d501dfcd7c9c..fb0333c504e0dc73d688e7577c473532335be8e9 100644 --- a/capture.js +++ b/capture.js @@ -39,41 +39,41 @@ const puppeteer = require("puppeteer"); } } // 初始化模拟浏览器 - const browser = await puppeteer.launch(); + const browser = await puppeteer.launch({ + headless: true + }); const page = await browser.newPage(); // 设置宽高 await page.setViewport({ width: _width, height: _height }); try { await page.goto(_url); - setTimeout(function() { - if (_output == "file") { - page.screenshot({ - path: - "output/" + - _url.split("//")[1] + - "_t" + - _time + - "_size" + - _size + - ".jpg" - }); - console.log( - "生成图片路径为:" + - __dirname + - "\\output\\" + - _url.split("//")[1] + - "_t" + - _time + - "_size" + - _size + - ".jpg" - ); - } else { - page.screenshot({ encoding: "base64" }).then(function(res) { + await autoScroll(page); + if (_output == "file") { + let timestamp = Date.parse(new Date()); + // _url = _url.match(/https:\/\/(\S*)\//)[1]; + await page.screenshot({ + path: + "output/" + timestamp + "_t" + _time + "_size" + _size + ".jpg", + fullPage: true + }); + console.log( + "生成图片路径为:" + + __dirname + + "\\output\\" + + timestamp + + "_t" + + _time + + "_size" + + _size + + ".jpg" + ); + } else { + await page + .screenshot({ encoding: "base64", fullPage: true }) + .then(function(res) { console.log("data:image/png;base64," + res); }); - } - }, _time); + } setTimeout(function() { browser.close(); }, _time + 1000); @@ -89,3 +89,25 @@ const puppeteer = require("puppeteer"); } } })(); + +/** + * 模拟自动向下滚动 + * @param {object} page + */ +async 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); + }); + }); +}