我正试图从网站上抓取图片。我只想从该网站获得15张图片。但它将所有图像保存在我的图像文件夹中。我怎样才能摆脱循环?我正在使用nodejs。
function (res) {
mkdirp('public/images/'+req.body.tags, function (err) {
if (err) console.error(err);
else {
let count = 1;
for(i=0;i<res.length;i++){
var k = res[i].url.slice((res[i].url.lastIndexOf(".") - 1 >>> 0) + 2).slice(0,3);
if (count<=15){
if (k=="jpg" || k=="png") {
console.log(count) ;
request (res[i].url).pipe(fs.createWriteStream('public/images/'+req.body.tags+'/'+req.body.tags+i))
count++;
}
} else {
break;
}
}
});
}
此处break
不起作用。它继续保存超过15张图像。我哪里错了?
答案 0 :(得分:0)
通常情况下我会说,看看filter
数组,然后是slice
数组,然后是forEach
,然后就可以了。但是你想保持原始索引,所以它会使它稍微复杂化。但这应该有效:
function (res) {
mkdirp("public/images/" + req.body.tags, function (err) {
if (err) {
console.error(err);
} else {
res
.map((r, i) => ({ resource: r, index: i }))
.filter(item => {
var ext = item.resource.url.substr(item.resource.url.lastIndexOf(".") + 1);
return ext === "jpg" || ext === "png";
})
.slice(0, 15)
.forEach(item => {
request(item.resource.url)
.pipe(fs.createWriteStream(
"public/images/" +
req.body.tags + "/" +
req.body.tags + item.index));
});
}
}
}