如何在 nodejs 里,把 puppeteer 做成一个 web 服务?

2018-03-09 21:09:04 +08:00
 sunsh2017
我想把 puppeteer,这个抓取网页的功能,做成一个 web 服务,具体来说,这个 web 服务接收两个参数,一个是网址 url,另一个是选择器 selector, web 服务接收这两个参数,然后 puppeteer 抓取这个 url,解析出 selector, 并返回 出这个 selector.
大致代码如下 :

const express = require('express')

const app = express()

app.get('/myurl/:url/:selector', function (req, res,page) {
  const puppeteer = require('puppeteer');
  var url=req.params.url;
  var selector=req.params.selector
 (async() => {
   const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
   const page = await browser.newPage();
   await page.goto('http://www.iciba.com/'+vocabulary);
   const html = await page.$eval(selector, e => e.outerHTML);
   browser.close();
   res.send(html);
 })();
})

app.listen(5000, function () {
})


但这个代码有致命问题,它每次都启动一次 puppeteer, 每次都开新标签,用完之后,每次都关闭标签 。能不能这些动作都做一次,每次都复用相同的标签页,来打个页面,各位 nodejs 高手有办法吗?
7552 次点击
所在节点    Node.js
23 条回复
binux
2018-03-10 12:44:44 +08:00
@sunsh2017 stackoverflow 面向的就是你这样水平的啊,为了让你看懂,当然是代码了。
反过来,论文就是很好的例子。如果你照着学术论文,能实现出同样的效果,算我输!
Pastsong
2018-03-10 12:49:08 +08:00
@sunsh2017 stackoverflow 直接上代码的回答都是因为问的问题太傻比了,跟你解释估计你也听不懂,两行代码自己拿去复制吧。这个问题就是这样的
leslie000666
2018-03-10 13:18:34 +08:00
思路 or code ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/436667

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX