import { parse } from "node-html-parser"; const BASE_URL = "https://www.nasa.gov/gallery/human-spaceflight-mission-patches/"; async function getPatchHrefs() { function getGalleryPageHref(page: number) { if (page > 1) { return `${BASE_URL}page/${page}/`; } else { return BASE_URL; } } return ( await Promise.all( [...Array(7).keys()] .map((val) => ++val) .map((page) => { return (async () => { const req = await fetch(getGalleryPageHref(page)); const data = parse(await req.text()); const gallery = data .getElementsByTagName("div") .filter((el) => el.classList.contains("hds-gallery-items")) .shift(); return gallery ?.getElementsByTagName("a") .map((el) => el.getAttribute("href")) .filter((el) => el) as string[]; })(); }), ) ).flat(); } const allPatches = await getPatchHrefs(); console.log(allPatches);