Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tobiaslins/netlify-functions-headless-chrome
https://github.com/tobiaslins/netlify-functions-headless-chrome
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/tobiaslins/netlify-functions-headless-chrome
- Owner: tobiaslins
- Created: 2020-10-10T13:31:38.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-10-10T14:03:07.000Z (over 4 years ago)
- Last Synced: 2024-12-23T16:52:37.689Z (about 1 month ago)
- Language: JavaScript
- Size: 325 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Netlify functions + Headless Chrome
> Run headless chrome in netlify lambda functions
## How
Add a [Netlify function](https://www.netlify.com/products/functions/) with the following code!
```js
const chromium = require('chrome-aws-lambda')
const puppeteer = require('puppeteer-core')exports.handler = async (event, context, callback) => {
let theTitle = null
let browser = null
console.log('spawning chrome headless')
try {
const executablePath = await chromium.executablePath// setup
browser = await puppeteer.launch({
args: chromium.args,
executablePath: executablePath,
headless: chromium.headless,
})// Do stuff with headless chrome
const page = await browser.newPage()
const targetUrl = 'https://davidwells.io'// Goto page and then do stuff
await page.goto(targetUrl, {
waitUntil: ["domcontentloaded", "networkidle0"]
})await page.waitForSelector('#phenomic')
theTitle = await page.title();
console.log('done on page', theTitle)
} catch (error) {
console.log('error', error)
return callback(null, {
statusCode: 500,
body: JSON.stringify({
error: error
})
})
} finally {
// close browser
if (browser !== null) {
await browser.close()
}
}return callback(null, {
statusCode: 200,
body: JSON.stringify({
title: theTitle,
})
})
}
```