Как перебрать в Cheerio, используя .each - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь очистить страницу, чтобы вставить img sr c в массив. Я использую библиотеку 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 sr c. В настоящее время только захват 1-го.

После исследования я обнаружил проблему с github, когда кто-то пытался использовать функцию со стрелкой, но на основе cheerio docs вы должны использовать обычные функции.

1 Ответ

0 голосов
/ 18 апреля 2020

Вы действительно хотите карту:

let flags = $('figure').get().map(ele => {
  return {
    img: $(ele).find('img').attr('src'),
    country: $(ele).find('figcaption').text().trim()
  }
})
  • Я использую карту js вместо карты приветствия, потому что я думаю, что она проще.

  • В документах cheerio не используются функции стрелок, потому что они были написаны до ES6. Не стесняйтесь использовать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...