57 lines
1.4 KiB
JavaScript
57 lines
1.4 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
|
|
const launch = async (
|
|
config = { url: '', screenshotPath: '', executablePath: '', timeout: 1000 }
|
|
) => {
|
|
|
|
config = Object.assign({
|
|
url: 'https://scrapingbee.com',
|
|
screenshotPath: './screenshot.jpg',
|
|
executablePath: '/usr/bin/chromium',
|
|
timeout: 1000,
|
|
}, config)
|
|
|
|
const profile = {
|
|
data: [
|
|
// 'wormlazy199210',
|
|
'wormlazy199211',
|
|
'wormlazy199212',
|
|
],
|
|
select: function() {
|
|
return this.data[Math.floor(Math.random() * this.data.length)]
|
|
}
|
|
}
|
|
|
|
const browser = await puppeteer.launch({
|
|
executablePath: config.executablePath,
|
|
args: [
|
|
'--no-sandbox',
|
|
'--headless',
|
|
'--disable-gpu',
|
|
`--user-data-dir=/puppeteer/chrome-profiles/${profile.select()}`
|
|
]
|
|
});
|
|
const page = await browser.newPage();
|
|
|
|
// Set the viewport's width and height
|
|
await page.setViewport({ width: 1920, height: 1080 });
|
|
|
|
// Open ScrapingBee's home page
|
|
await page.goto(config.url);
|
|
|
|
// Waiting Dom Ready
|
|
await new Promise(r => setTimeout(r, config.timeout));
|
|
|
|
try {
|
|
// Capture screenshot and save it in the current folder:
|
|
await page.screenshot({ path: config.screenshotPath });
|
|
console.log(`Screenshot has been captured successfully`);
|
|
|
|
} catch (err) {
|
|
console.log(`Error: ${err.message}`);
|
|
} finally {
|
|
await browser.close();
|
|
}
|
|
};
|
|
module.exports = launch
|