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

从node.js中的外部网页获取所有图像URL的最佳方法是什么,node.js,Node.js,从节点,我想从外部网页获取所有图像URL(src属性,来自img标记) 我开始考虑phantonjs,但不喜欢它没有真正集成到节点中(即它在外部进程中运行) 接下来,我尝试使用请求模块和cheerio。这非常有效,除了我必须处理相对的图像URL。例如 <img src='http//example.com/i.jpg'> <img src='/i.jpg'> <img src='i.jpg'> <img src='../images/i.jpg'>

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

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

接下来,我尝试使用请求模块和cheerio。这非常有效,除了我必须处理相对的图像URL。例如

<img src='http//example.com/i.jpg'>
<img src='/i.jpg'>
<img src='i.jpg'>
<img src='../images/i.jpg'>


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

我最终使用了
请求
节点模块以及
cheerio
url
。以下是我最后做的事情(请注意,这是mvp代码,而不是生产质量):


我想请求+欢呼可能是最简单的方式。您也可以使用jquery+jsdom代替,这些相对绝对的方法能帮助您吗?看起来node的模块可以在这里实现这个功能。简单的事情是,你可以试试无头浏览器,用NodeJ试试Puppeter
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);
        }
      }));
    }
  });
});