-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.js
More file actions
27 lines (21 loc) · 862 Bytes
/
api.js
File metadata and controls
27 lines (21 loc) · 862 Bytes
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
var router = require('express').Router();
var puppeteer = require('puppeteer');
router.route('/stock/:ticker').get(async (req, res) => {
let ticker = req.ticker;
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
const page = await browser.newPage();
let url = `https://finance.yahoo.com/quote/${ticker}?p=${ticker}&.tsrc=fin-srch`;
await page.goto(url);
await page.waitFor('#quote-market-notice', { timeout: 1000 });
let price = await page.evaluate(() => document.querySelector("#quote-header-info > div.Pos\\(r\\) > div > div > span").textContent);
await browser.close();
res.send({ ticker, price });
});
router.param('ticker', (req, res, next, ticker) => {
req.ticker = ticker.toUpperCase();
next();
});
module.exports = router;