从node.js中的外部网页获取所有图像URL的最佳方法是什么

thr*_*ups 2 node.js

从节点,我想从外部网页获取所有图像网址(src来自img标签的属性).

我开始考虑phantonjs,但不喜欢它没有真正集成到节点(即它在外部进程中运行).

接下来,我尝试使用请求模块和cheerio.这很好用,除了我必须处理相对图像网址.例如

<img src='http//example.com/i.jpg'>
<img src='/i.jpg'>
<img src='i.jpg'>
<img src='../images/i.jpg'>
Run Code Online (Sandbox Code Playgroud)

我可以解决这个问题,但我想知道是否有更简单的方法?

thr*_*ups 8

我最终使用了request节点模块cheeriourl.这是我最终做的事情(请注意,这是mvp代码,而不是生产质量):

app.get('/scrape-images', function(req, res) {
  request(req.query.url, function (error, response, body) {
    if (!error && response.statusCode == 200) {
      var $ = cheerio.load(body);
      var reqUrl = url.parse(req.query.url);

      res.send($('img').map(function(i, e) {
        var srcUrl = url.parse($(e).attr('src'));

        if (!srcUrl.host) {
          return url.resolve(reqUrl, srcUrl);
        } else {
          return url.format(srcUrl);
        }
      }));
    }
  });
});
Run Code Online (Sandbox Code Playgroud)