Extraire les liens d'une page web
L'API HTMLRewriter de Bun peut être utilisée pour extraire efficacement les liens du contenu HTML. Elle fonctionne en chaînant des sélecteurs CSS pour faire correspondre les éléments, le texte et les attributs que vous souhaitez traiter. Voici un exemple simple d'extraction de liens d'une page web. Vous pouvez passer à .transform une Response, Blob ou 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);
}
},
});
// Attendre que la réponse soit traitée
await rewriter.transform(response).blob();
console.log([...links]); // ["https://bun.com", "/docs", ...]
}
// Extraire tous les liens du site web Bun
await extractLinks("https://bun.com");Convertir les URL relatives en URL absolues
Lors du scraping de sites web, vous souhaitez souvent convertir les URL relatives (comme /docs) en URL absolues. Voici comment gérer la résolution d'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) {
// Convertir les URL relatives en URL absolues
try {
const absoluteURL = new URL(href, url).href;
links.add(absoluteURL);
} catch {
links.add(href);
}
}
},
});
// Attendre que la réponse soit traitée
await rewriter.transform(response).blob();
return [...links];
}
const websiteLinks = await extractLinksFromURL("https://example.com");Consultez Docs > API > HTMLRewriter pour une documentation complète sur la transformation HTML avec Bun.