【问题标题】:What is the best way to get all image urls from an external web page in node.js从 node.js 中的外部网页获取所有图像 url 的最佳方法是什么
【发布时间】:2013-06-06 21:17:20
【问题描述】:

从节点,我想从外部网页获取所有图片网址(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'>

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

【问题讨论】:

  • 我想 request + Cheerio 可能是最简单的方法。你也可以使用 jquery + js-dom 来代替
  • 这些从相对到绝对的方法能帮到你吗? stackoverflow.com/questions/7544550/…
  • 看起来 node 的 url 模块在这里可以解决问题。
  • 简单的事情,你可以试试 Headless 浏览器,用 Nodejs 试试 Puppeteer

标签: node.js


【解决方案1】:

我最终使用了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);
        }
      }));
    }
  });
});

【讨论】:

    猜你喜欢
    • 2014-01-24
    • 1970-01-01
    • 2014-07-14
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多