如何使用.each进行迭代循环

问题描述 投票:0回答:1

我正在尝试抓取页面以将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文档,您应该使用常规功能。

jquery web-scraping foreach cheerio
1个回答
0
投票

您真的想要地图:

let flags = $('figure').get().map(ele => {
  return {
    img: $(ele).find('img').attr('src'),
    country: $(ele).find('figcaption').text().trim()
  }
})
  • 我使用js映射而不是cheerio映射,因为我认为它更简单。

  • cheerio文档不使用箭头功能,因为它们是在ES6之前编写的。随时使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.