-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
40 lines (35 loc) · 1.25 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import {onRequest} from 'firebase-functions/v2/https'
import puppeteer from 'puppeteer-chromium-resolver'
export const scrape = onRequest({
// メモリは最低でも1GB推奨だがギリギリだと処理が中断することがあるため余裕を持たせておく
memory: '2GiB',
}, async (req, res) => {
// ローカルにインストールされたChromiumを解決する
const stats = await puppeteer()
// ブラウザを起動する
const browser = await stats.puppeteer.launch({
// Chromiumの実行パス
executablePath: stats.executablePath,
args: [
'--disable-gpu',
'--disable-dev-shm-usage',
'--disable-setuid-sandbox',
'--no-first-run',
'--no-sandbox',
'--no-zygote',
'--single-process',
],
// 古いヘッドレスモード(パフォーマンスがいい)
headless: 'shell',
})
// 新規ページを開く
const page = await browser.newPage()
// ページにアクセスする
await page.goto('https://zenn.dev/takamoso', {waitUntil: 'domcontentloaded'})
// ページタイトルを出力
res.send(await page.title())
// ブラウザを閉じる
await browser.close()
// レスポンスを返す
res.end()
})