Links von einer Webseite extrahieren
Buns HTMLRewriter API kann verwendet werden, um effizient Links aus HTML-Inhalten zu extrahieren. Sie funktioniert durch das Verketten von CSS-Selektoren, um die Elemente, Texte und Attribute zu matchen, die Sie verarbeiten möchten. Dies ist ein einfaches Beispiel, wie Sie Links von einer Webseite extrahieren können. Sie können .transform eine Response, Blob oder string übergeben.
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);
}
},
});
// Warten Sie, bis die Response verarbeitet wurde
await rewriter.transform(response).blob();
console.log([...links]); // ["https://bun.com", "/docs", ...]
}
// Extrahieren Sie alle Links von der Bun-Website
await extractLinks("https://bun.com");Relative URLs in absolute konvertieren
Beim Scrapen von Websites möchten Sie oft relative URLs (wie /docs) in absolute URLs konvertieren. Hier erfahren Sie, wie Sie die URL-Auflösung handhaben:
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) {
// Relative URLs in absolute konvertieren
try {
const absoluteURL = new URL(href, url).href;
links.add(absoluteURL);
} catch {
links.add(href);
}
}
},
});
// Warten Sie, bis die Response verarbeitet wurde
await rewriter.transform(response).blob();
return [...links];
}
const websiteLinks = await extractLinksFromURL("https://example.com");Siehe Docs > API > HTMLRewriter für vollständige Dokumentation zur HTML-Transformation mit Bun.