Estrarre link da una pagina web
L'API HTMLRewriter di Bun può essere usata per estrarre efficientemente link da contenuti HTML. Funziona concatenando selettori CSS per corrispondere agli elementi, testo e attributi che vuoi elaborare. Questo è un semplice esempio di come estrarre link da una pagina web. Puoi passare a .transform una Response, Blob o string.
ts
async function extractLinks(url: string) {
const links = new Set<string>();
const response = await fetch(url);
const rewriter = new HTMLRewriter().on("a[href]", {
element(el) {
const href = el.getAttribute("href");
if (href) {
links.add(href);
}
},
});
// Attendi che la risposta venga elaborata
await rewriter.transform(response).blob();
console.log([...links]); // ["https://bun.com", "/docs", ...]
}
// Estrai tutti i link dal sito web di Bun
await extractLinks("https://bun.com");Convertire URL relative in assolute
Quando si esegue lo scraping di siti web, spesso si desidera convertire URL relative (come /docs) in URL assolute. Ecco come gestire la risoluzione degli URL:
ts
async function extractLinksFromURL(url: string) {
const response = await fetch(url);
const links = new Set<string>();
const rewriter = new HTMLRewriter().on("a[href]", {
element(el) {
const href = el.getAttribute("href");
if (href) {
// Converte URL relative in assolute
try {
const absoluteURL = new URL(href, url).href;
links.add(absoluteURL);
} catch {
links.add(href);
}
}
},
});
// Attendi che la risposta venga elaborata
await rewriter.transform(response).blob();
return [...links];
}
const websiteLinks = await extractLinksFromURL("https://example.com");Consulta Docs > API > HTMLRewriter per la documentazione completa sulla trasformazione HTML con Bun.