如何使用javascript从网站刮取图像?

时间:2016-09-18 03:52:27

标签: javascript

我正在尝试用javascript编写脚本来从网站上抓取图像并将其保存到我的计算机上。

我设法让脚本使用jQuery隔离包含我想要的图像的图像标记。所以我有一个jquery选择:

<img src="sourceofimage.com/path/img">

我的问题是我现在如何将此图像保存到计算机上?

我尝试过搜索,但我得到的所有结果都是关于制作下载按钮或其他面向用户的任务。要清楚,我将是唯一一个运行此脚本的人,它将通过将其粘贴到控制台来运行。

我只想要一种方法以编程方式下载图像并在jQuery隔离后设置其文件名。这可能吗?

编辑:有人可以解释为什么会收到如此多的downvotes吗?

3 个答案:

答案 0 :(得分:0)

尝试使用fs库

fs.writeFile('logo.png', imagedata, 'binary', function(err){
        if (err) throw err
        console.log('File saved.')

答案 1 :(得分:0)

这适用于您网页上的每个图片,它是锚点的直接子图片,但您可以使用:

'$('a > img').each(function(){
  var $this = $(this);
  $this.parent('a').attr('href', $this.attr('src'));
  });

但它可以胜任。

但唯一的问题是,禁用JS的用户会看到一个带有空href的锚点。以下将实现相同的最终结果,同时还可以简化代码(更清晰的HTML)并添加优雅降级:

'<img src="folio/1.jpg" class="downloadable" />
 $('img.downloadable').each(function(){
  var $this = $(this);
 $this.wrap('<a href="' + $this.attr('src') + '" download />')

答案 2 :(得分:0)

在网络浏览器中,基本上无法完成,您无法直接写入文件系统(可能使用浏览器扩展程序,但我暂时没有看过这个)。

使用节点并没有阻止你做类似的事情:

  • 使用http检索HTML
  • 使用jQuery解析html - 类似于$(html).find('img');
  • 为每个图片生成一个http请求以下载它们
  • 使用fs
  • 将其保存到磁盘