Cheerio возвращая текст не в дом - PullRequest
1 голос
/ 10 мая 2019

Я использую cheerio для очистки https://www.snopes.com

Я пытаюсь получить дату статьи, но я возвращаю дату, повторенную много раз, а иногда и другую дату для хорошей меры

Источник показывает <span class="date">9 May 2019</span> но я получаю:

9 мая 20199 май 20198 май 20198 май 20198 май 20199 май 20199 май 20199 май 20198 май 20198 май 20198 май 20198 май 20197 май 20192 май 201923Апрель 201916 апрель 20193 май 20196 май 20196 май 20197 май 20192 май 20199 май 20199 май 20199 май 20199 май 20199 май 2019

const cheerio = require('cheerio');
const request = require('request');
request('https://www.snopes.com', function (error, response, html) {
  if (!error && response.statusCode == 200) {
    const $ = cheerio.load(html);
    const articleRows = $('.media-list .media-wrapper a');
    const articleText = $(articleRows).children(".media-body-wrapper").children(".media-body");
    articleText.each((i,el) => {
      let articleDate = $(articleText).children("p").children(".date");
      console.log(articleDate.text());
    })

    articleRows.each((i, el) => {
      let imageURL = $(el).children(".featured-media").children("img").attr('data-lazy-src');
    })
  }
});

Как я могу получить именно то, что вижу в источнике?

1 Ответ

2 голосов
/ 10 мая 2019

Проблема в том, что вы снова используете всю коллекцию: articleText, вы должны использовать текущий элемент итерации: el

articleText.each((i,el) => {
      let articleDate = $(el).children("p").children(".date");
      console.log(articleDate.text());
})
...