Commit 737ae9a6 authored by 陈豪's avatar 陈豪

generate 调整

parent 1e8a530e
WXT_ORIGIN = 'https://www.weixiaotong.com.cn/' WXT_ORIGIN = 'https://www.weixiaotong.com.cn/'
DOCUMENT_WIDTH = 1500 DOCUMENT_WIDTH = 1500
DOCUMENT_HEIGHT = 2668 DOCUMENT_HEIGHT = 2668
BROWER_PAGE_COUNT = 3 BROWER_PAGE_COUNT = 1
OPEN_MONITORING_SYSTEM = 1 OPEN_MONITORING_SYSTEM = 1
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
"name": "weixt_growth_generate", "name": "weixt_growth_generate",
"version": "1.0.0", "version": "1.0.0",
"description": "", "description": "",
"main": ".eslintrc.js",
"scripts": { "scripts": {
"test": "node ./src/server/scripts/index" "test": "node ./src/server/scripts/index"
}, },
......
const path = require('path')
const pathResources = path.resolve(__dirname, '../resources')
const resolve = p => path.resolve(pathResources, p)
// conf
const documentWidth = process.env.DOCUMENT_WIDTH - 0
const documentHeight = process.env.DOCUMENT_HEIGHT - 0
module.exports = async function generation(page, url, pageIndex) {
/**
脚步方式打开目标界面
*/
await page.setViewport({width: documentWidth, height: documentHeight})
await page.goto(url, {
timeout: 120000 // 请求超时时间
// waitUntil: []
})
/**
可以在页面中定义自己认为加载完的事件,在合适的时间点我们将该事件设置为 true
以下是在触发截图时的判断逻辑。
如果 renderdone 出现且为 true 那么就截图。
如果是 Object(null),说明页面加载出错了,我们可以捕获该异常进行提示
*/
// let renderdoneHandle = await page.waitForFunction('window.renderdone', {
// polling: '120' // 轮询时间间隔。 raf/mutation
// })
// const renderdone = await renderdoneHandle.jsonValue()
// if (renderdone === null) {
// throw new Error(
// `加载页面失败:报表${renderdone.componentId}出错 -- ${renderdone.message}`
// )
// } else {
// console.log('页面加载成功')
// }
/**
截图
文档:https://github.com/puppeteer/puppeteer/blob/v7.1.0/docs/api.md#pagescreenshotoptions
*/
return page.screenshot({
type: 'jpeg',
quality: 100,
fullPage: true
})
}
...@@ -43,8 +43,8 @@ class Screen extends EventEmitter { ...@@ -43,8 +43,8 @@ class Screen extends EventEmitter {
'--disable-gpu', '--disable-gpu',
'--disable-dev-shm-usage', '--disable-dev-shm-usage',
'--no-first-run', '--no-first-run',
'--no-zygote', '--no-zygote'
'--single-process' // '--single-process'
], ],
// 是否将浏览器进程标准输出和标准错误输入到 process.stdout 和 process.stderr 中 // 是否将浏览器进程标准输出和标准错误输入到 process.stdout 和 process.stderr 中
dumpio: false dumpio: false
......
require('dotenv').config()
const puppeteer = require('puppeteer')
const {infoLog, warnningLog, successLog, log} = require('../../utils/console')
const generation = require('../generation/image')
const {urls} = require('../../test.response')
const Archiver = require('../compression/archiver')
;(async function () {
let generatesTime = +new Date()
// ready puppeteer (browser / page)
// https://zhaoqize.github.io/puppeteer-api-zh_CN/#?product=Puppeteer&version=v2.1.1&show=api-puppeteerlaunchoptions
const browser = await puppeteer.launch({
headless: true, // false将有浏览器界面启动
// slowMo: 100, // 放慢浏览器执行速度,方便测试观察
args: [
// 启动 Chrome 的参数,
// https://peter.sh/experiments/chromium-command-line-switches/
'--no-sandbox',
'--disable-setuid-sandbox' // 关闭沙箱
],
// 是否将浏览器进程标准输出和标准错误输入到 process.stdout 和 process.stderr 中
dumpio: false
})
const browserPage = await browser.newPage()
const compression = new Archiver({})
// generate
for (let i = 0, length = urls.length; i < length; i++) {
let targetUrl = urls[i]
try {
// 浏览目标地址并生成图片
let generationTime = +new Date()
warnningLog(`generate url:${targetUrl}`)
let imageBuf = await generation(browserPage, targetUrl)
compression.archiveAppend(imageBuf, `${i + i}.jpeg`)
infoLog(
`[time consuming - generation] :${+new Date() - generationTime} ms \n`
)
} catch (e) {
console.log(`Destination address (${targetUrl}) failed to generate image`)
}
}
// close
compression.archiveFinalize()
await browserPage.close()
await browser.close()
successLog(`[Total time]: ${+new Date() - generatesTime} \n`)
})()
// module.exports = generates
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment