【发布时间】:2019-01-30 14:31:00
【问题描述】:
我需要从几个网站获取大量图像并将它们下载到我的磁盘上以便我可以使用它们(将它们上传到 blob (azure) 然后将链接保存到我的数据库)。
获取图像
我知道如何使用 JS 从 html 中获取图像,例如其中一个我会创建一个 for 循环并执行:
document.getElementsByClassName('person')[i].querySelector('div').querySelector('img').getAttribute('src')
然后我会得到所有图片的链接。
保存图像
我还看到我可以使用 node 和 fs 模块将文件保存到磁盘,方法是:
function saveImageToDisk(url, localPath) {var fullUrl = url;
var file = fs.createWriteStream(localPath);
var request = https.get(url, function(response) {
response.pipe(file);
});
}
如何将它们放在一起
这是我卡住的地方,我不知道如何连接这两个部分(脚本和 nodejs 代码),我想获取图像以及图像名称(在这种情况下为 alt 标记)和然后在节点中使用它们将图像上传到 blob,并将它们的名称和图像 blob url 放入我的数据库中。
我以为我可以下载 html 页面,然后将 JS 脚本放在正文的底部,但是我不知道如何将 url 传递给 nodejs 代码。
我该怎么做?
我不太习惯使用脚本,我主要使用没有它们的节点,我对它们的交互以及如何将 js 脚本连接到我的代码感到有些困惑。
这也是解决此问题的最佳方法,还是我没有看到更简单/更好的方法?
【问题讨论】:
-
看看谷歌的 Puppeteer,你可以通过节点github.com/GoogleChrome/puppeteer从网站访问和获取数据
-
使用ajax将url数组从客户端发送到节点服务器
标签: javascript node.js web-scraping