我正在尝试抓取页面以将img src拉入数组。我正在使用cheerio库。
这里是我所拥有的:
$ = cheerio.load(body);
let flags = [];
$('figure').each(function(i, ele) {
// get image and country name, website use 'figcaption' under 'figure'
let imgTag = $(ele).children('img').attr('src');
let countryName = $(ele).children('figcaption').text().trim();
// create obj
let obj = {
img: imgTag,
country: countryName
}
// add to object
flags[i] = obj;
console.log(flags);
});
我的输出看起来像这样:
[ { img:
'https://cdn.staticaly.com/gh/hjnilsson/country-flags/master/svg/ad.svg',
country: 'Andorra' } ]
我在控制台中没有任何错误。但是我要寻找的是所有img src。它目前仅抢第一。
研究后,我看到了一个github问题,有人尝试使用箭头功能,但基于cheerio文档,您应该使用常规功能。
您真的想要地图:
let flags = $('figure').get().map(ele => {
return {
img: $(ele).find('img').attr('src'),
country: $(ele).find('figcaption').text().trim()
}
})
我使用js映射而不是cheerio映射,因为我认为它更简单。
cheerio文档不使用箭头功能,因为它们是在ES6之前编写的。随时使用它们。