@aidarkezio/main-func
Version:
📦 It has my funcs
34 lines (32 loc) • 1.39 kB
text/typescript
import got from 'got'
import cheerio from 'cheerio'
import type { Liputan6 } from './types'
export default async function liputan6 (): Promise<Liputan6[]> {
const html = await got('https://www.liputan6.com/').text()
const $ = cheerio.load(html)
const results: Liputan6[] = []
$('div.articles > div.articles--iridescent-list').each((i, el) => {
$(el).find('article.articles--iridescent-list--item').each((i, el) => {
const $el = $(el)
const title = $el.find('span.articles--iridescent-list--text-item__title-link-text').text()
const link = $el.find('a.ui--a[data-template-var="url"]').attr('href')
const description = $el.find('div.articles--iridescent-list--text-item__summary').text()
const $image = $el.find('picture.articles--iridescent-list--text-item__figure-image > img')
const image = ($image.attr('src') || $image.attr('data-src') || $image.attr('data-high-dpi')) as string
const label = $el.find('a.articles--iridescent-list--text-item__category').text()
const $date = $el.find('time.articles--iridescent-list--text-item__time')
const date = $date.attr('datetime') || $date.attr('title') || $date.text()
if (title && link) {
results.push({
title,
link,
image,
description,
label,
date
})
}
})
})
return results
}