1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import { DOMParser } from "https://deno.land/x/deno_dom/deno-dom-wasm.ts";
export async function handler(request: Request) {
let url = "https://www.capfriendly.com/";
let res = await fetch(url);
let html = await res.text();
let doc = new DOMParser().parseFromString(html, "text/html");
let table = doc.querySelector("table#cf_homepage__teamTable");
let headers = Array.from(table.querySelectorAll("th")).map(h => h.textContent.trim()).map(e => e === "" ? "?" : e);
let rawRows = Array.from(table.querySelectorAll("tr")).map(r => {
let cells = Array.from(r.querySelectorAll("td"));
console.log(cells);
let cellData = cells.map(cell => cell.textContent.trim());
if (cellData.length > 0) {
return Object.fromEntries(headers.map((header, index) => [header, cellData[index]]));
}
return null;
}).filter(row => row !== null);
return Response.json(rawRows);
}