Невозможно получить нужные данные с помощью cheerio - PullRequest
0 голосов
/ 31 марта 2020

Я новичок в Cheerio js просто хочу повторить спецификацию c li с веб-сайта li выглядит следующим образом

<li class="webcam">
    <a href="/en/webcam/italia/lazio/roma/roma-colosseo.html">
        <span class="inner-wrapper">
            <span class="img-wrapper"><span class="label label-info lb_sm" style="position:absolute;">World
                    Wonder</span>
                <img src="https://static.skylinewebcams.com/live1151.jpg"
                    data-original="https://static.skylinewebcams.com/live1151.jpg" alt="Italy - Rome - Colosseum"
                    class="lazy" style="display: inline;" width="318">
            </span>
            <span class="title">Italy - Rome - Colosseum</span>
            <span class="description">Rome, view of the Colosseum and the ruins of the gladiator gymnasium</span>
        </span>
    </a>
</li>

Я хочу получить href из тега a, data-original из тега img и .title из тега span.

Вот что я пытался до сих пор но не увенчались успехом, это пример поиска только с указанным тегом c, я не знал, как найти все необходимые вещи в одном go с помощью cheerio.

request(url, (err, body) => {
  if (err) { console.log(err); return; }
  $ = cheerio.load(body);

  links = $('img[class=lazy]'); //jquery get all hyperlinks
  $(links).each(function (i, link) {
     console.log(i, link.attribs.alt);
     console.log(i, link.attribs.data-original);
  });
})

Любая помощь будет оценена спасибо

1 Ответ

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

Вы хотите повторить li s, а не img s:

let data = $('li.webcam').get().map(li => {
  return {
    href: $(li) .find('a').attr('href'),
    'data-original': $(li).find('img').attr('data-original'),
    title: $(li).find('span.title').text() 
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...