scraper/scrapers/liputan6.js
2026-04-21 19:21:04 +07:00

31 lines
1.2 KiB
JavaScript

import { load } from 'cheerio'
import http from './utils/http.js'
/**
* Cari berita di Liputan6.com
* @param {string} keyword
* @param {number} limit
*/
export async function searchLiputan6(keyword, limit = 10) {
try {
const url = `https://www.liputan6.com/search?q=${encodeURIComponent(keyword)}`
const { data } = await http.get(url)
const $ = load(data)
const results = []
$('article, .articles--iridescent-list--text-item, .article-list-item').each((_, el) => {
if (results.length >= limit) return false
const title = $(el).find('h4, h3, h2, .articles--iridescent-list--text-item__title').first().text().trim()
const link = $(el).find('a').first().attr('href') ?? null
const time = $(el).find('time, .articles--iridescent-list--text-item__time').first().text().trim() || null
const source = 'Liputan6'
const thumb = $(el).find('img').attr('src') ?? null
if (title && link) results.push({ title, link, time, source, thumb })
})
return { status: true, total: results.length, source: 'liputan6', data: results }
} catch (err) {
return { status: false, source: 'liputan6', error: err.response?.status || err.message }
}
}