d

 avatar
unknown
javascript
4 years ago
1.8 kB
4
Indexable
const cheerio = require("cheerio");
const superagent = require("superagent");
var axios = superagent.agent();

const siteUrl = "https://www.cermati.com";
const link = new Set();


const fetchData = async (link) => {
  try {
    const result = await axios.get(siteUrl + link);
    return cheerio.load(result.text);
  } catch (err) {
    throw (err)
  }
};

const getResults = async () => {

  try {
    const $ = await fetchData('/artikel');

    $('div.list-of-articles').each((i, value) => {
      $(value).find('div.article-list-item').each((j, data) => {
        link.add($(data).find('a').attr('href'))
      });
    });
    return [...link].sort()
  } catch (err) {
    throw (err)
  }
};

const getResultDetails = async (link) => {
  try {
    const $ = await fetchData(link);

    let url = "";
    let title = "";
    let author = "";
    let postingDate = "";
    const relatedArticles = new Set();

    url = siteUrl + link;
    title = $('h1.post-title').text().trim()
    author = $('span.author-name').text().trim()
    postingDate = $('span.post-date').children('span').text().trim()
    

    $('div.col-lg-3 .margin-bottom-30').each((i, sidebar) => {
      //i = 1 is Artikel Terkait
      if (i === 1) {
        $(sidebar).find('ul.panel-items-list li').each((i, related) => {
          const urlRelated = siteUrl + $(related).find('li>a').attr('href');
          const titleRelated = $(related).find('li a').children('h5.item-title').text();
          relatedArticles.add({
            "url": urlRelated,
            "title": titleRelated
          })
        });
      }
    });
    return {
      url,
      title,
      author,
      postingDate,
      relatedArticles: [...relatedArticles].sort(),
    };
  } catch (err) {
    throw (err)
  }
}
module.exports = {
  getResults,
  getResultDetails
};
Editor is loading...