31 lines
1002 B
JavaScript
31 lines
1002 B
JavaScript
// /scraper/scrapeScoreboard.js
|
|
const axios = require("axios");
|
|
const cheerio = require("cheerio");
|
|
|
|
module.exports = async function scrapeScoreboard(url) {
|
|
const res = await axios.get(url);
|
|
const $ = cheerio.load(res.data);
|
|
|
|
const tabelle = [];
|
|
|
|
$("table.samsDataTable tbody tr").each((_, row) => {
|
|
const tds = $(row).find("td");
|
|
const platzText = $(tds[0]).text().trim();
|
|
const platz = parseInt(platzText, 10);
|
|
|
|
if (isNaN(platz)) return;
|
|
|
|
const team = $(tds[1]).find("a span").first().text().trim();
|
|
const statusRaw = $(tds[2]).text().trim();
|
|
const status = statusRaw.includes("▲") ? "Aufstieg" : statusRaw.includes("▼") ? "Abstieg" : "-";
|
|
const spiele = parseInt($(tds[3]).text().trim(), 10);
|
|
const siege = parseInt($(tds[4]).text().trim(), 10);
|
|
const saetze = $(tds[5]).text().trim();
|
|
const punkte = parseInt($(tds[6]).text().trim(), 10);
|
|
|
|
tabelle.push({ platz, team, status, spiele, siege, saetze, punkte });
|
|
});
|
|
|
|
return tabelle;
|
|
};
|