| 27 | } |
| 28 | |
| 29 | async function screenshot() { |
| 30 | const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: true, ignoreHTTPSErrors: true}); |
| 31 | const page = await browser.newPage(); |
| 32 | let shot = false; |
| 33 | if(folder && selector){ |
| 34 | shot = true; |
| 35 | page.setViewport({width: 1280, height: 20480}); |
| 36 | } |
| 37 | |
| 38 | page.setExtraHTTPHeaders({ |
| 39 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,co;q=0.7,fr;q=0.6,zh-HK;q=0.5,zh-TW;q=0.4", |
| 40 | "User-Agent": "Mozi lla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3766.2 Safari/537.36" |
| 41 | }); |
| 42 | |
| 43 | await page.setRequestInterception(true); |
| 44 | page.on("request", request => { |
| 45 | getHost(request.url()).indexOf("google")>-1 ? request.abort() : request.continue(); |
| 46 | }); |
| 47 | let timeout = shot ? 120000 : 60000; |
| 48 | |
| 49 | await page.goto(url, {"waitUntil" : ['networkidle2', 'domcontentloaded'], "timeout":timeout}); |
| 50 | let res; |
| 51 | if(shot){ |
| 52 | if (folder.substr(folder.length-1,1)!="/"){ |
| 53 | folder=folder+"/" |
| 54 | } |
| 55 | res = await page.evaluate(function (ele) { |
| 56 | let bodyHeight = document.querySelector("body").clientHeight |
| 57 | |
| 58 | let data = new Array(); |
| 59 | let eleSlice=ele.split(","); |
| 60 | |
| 61 | for (let i = 0; i < eleSlice.length; i++) { |
| 62 | let d = [],item = eleSlice[i]; |
| 63 | let elements = document.querySelectorAll(item); |
| 64 | for (var element of elements){ |
| 65 | let bounding = element.getBoundingClientRect(); |
| 66 | let x = bounding.x; |
| 67 | let y = bounding.y; |
| 68 | let width = bounding.width; |
| 69 | let height = bounding.height; |
| 70 | d.push({x, y, width, height}); |
| 71 | } |
| 72 | data.push(d) |
| 73 | } |
| 74 | |
| 75 | return {height: bodyHeight, data: data}; |
| 76 | }, selector); |
| 77 | fs.writeFile(folder+'screenshot.json', JSON.stringify(res),function(){}); |
| 78 | await page.screenshot({path: folder+'screenshot.png', fullPage: true}); |
| 79 | } |
| 80 | let content=await page.content(); |
| 81 | console.log(content); |
| 82 | await browser.close(); |
| 83 | } |
| 84 | |
| 85 | function getHost(url) { |
| 86 | let u = String(url).toLowerCase() |