@suzakuteam/scraper-node
Version:
Sebuah Module Scraper yang dibuat oleh Sxyz dan SuzakuTeam untuk memudahkan penggunaan scraper di project ESM maupun CJS.
108 lines (94 loc) • 3.05 kB
JavaScript
const axios = require("axios");
const cheerio = require("cheerio");
const { Success, ErrorResponse } = require("./lib/function.cjs");
const info = {
jadwalTV: {
freeChannel: async (channelName) => {
const { data } = await axios.get(
`https://www.jadwaltv.net/channel/${channelName}`,
);
const $ = cheerio.load(data);
const result = [];
$("table.table-bordered")
.first()
.find("tr")
.each((_, el) => {
const td = $(el).find("td");
if (td.length >= 2) {
const time = td.eq(0).text().trim();
const show = td.eq(1).text().trim();
if (time && show && !show.includes("Jadwal TV selengkapnya")) {
result.push({ time, show });
}
}
});
return result;
},
payChannel: async (channelName) => {
const urlFriendlyName = channelName.toLowerCase().replace(/\s+/g, "-");
const { data } = await axios.get(
`https://www.jadwaltv.net/jadwal-pay-tv/${urlFriendlyName}`,
);
const $ = cheerio.load(data);
const result = [];
$("table.table-bordered")
.first()
.find("tr")
.each((_, el) => {
const td = $(el).find("td");
if (td.length >= 2) {
const time = td.eq(0).text().trim();
const show = td.eq(1).text().trim();
if (time && show && !show.includes("Jadwal TV selengkapnya")) {
result.push({ time, show });
}
}
});
return result;
},
},
jadwalSholat: async (kota) => {
if (!kota) return "Query Kota Kosong Bodo";
try {
let { data } = await axios.get(
`https://www.umroh.com/jadwal-sholat/${kota}`,
);
let $ = cheerio.load(data);
let hasil = [];
$("table tbody tr").each((_, el) => {
let kolom = $(el).find("td");
hasil.push({
tanggal: $(kolom[0]).text().trim(),
imsyak: $(kolom[1]).text().trim(),
subuh: $(kolom[2]).text().trim(),
dzuhur: $(kolom[3]).text().trim(),
ashar: $(kolom[4]).text().trim(),
maghrib: $(kolom[5]).text().trim(),
isya: $(kolom[6]).text().trim(),
});
});
return hasil;
} catch (e) {
return `Gagal mengambil data: ${e.message}`;
}
},
jadwalBola: async () => {
try {
let { data } = await axios.get(
"https://gilabola.com/internasional/jadwal-bola-malam-ini/amp/",
);
let $ = cheerio.load(data);
let hasil = [];
$("table tbody tr").each((index, element) => {
let jadwal = $(element).find("td").eq(0).text().trim();
let kompetisi = $(element).find("td").eq(1).text().trim();
let liveTV = $(element).find("td").eq(2).text().trim();
hasil.push({ jadwal, kompetisi, liveTV });
});
return new Success(hasil);
} catch (error) {
console.error("Gagal mengambil data:", error.message);
}
},
};
module.exports = info;