استخراج الروابط من صفحة ويب
يمكن استخدام واجهة برمجة تطبيقات HTMLRewriter الخاصة بـ Bun لاستخراج الروابط من محتوى HTML بكفاءة. تعمل عن طريق ربط محددات CSS معًا لمطابقة العناصر والنصوص والسمات التي تريد معالجتها. هذا مثال بسيط على كيفية استخراج الروابط من صفحة ويب. يمكنك تمرير .transform لـ Response أو Blob أو 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);
}
},
});
// انتظر حتى تتم معالجة الاستجابة
await rewriter.transform(response).blob();
console.log([...links]); // ["https://bun.com", "/docs", ...]
}
// استخراج جميع الروابط من موقع Bun
await extractLinks("https://bun.com");تحويل عناوين URL النسبية إلى مطلقة
عند كشط المواقع، غالبًا ما تريد تحويل عناوين URL النسبية (مثل /docs) إلى عناوين URL مطلقة. إليك كيفية التعامل مع حل عناوين 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) {
// تحويل عناوين URL النسبية إلى مطلقة
try {
const absoluteURL = new URL(href, url).href;
links.add(absoluteURL);
} catch {
links.add(href);
}
}
},
});
// انتظر حتى تتم معالجة الاستجابة
await rewriter.transform(response).blob();
return [...links];
}
const websiteLinks = await extractLinksFromURL("https://example.com");راجع الوثائق > API > HTMLRewriter للحصول على الوثائق الكاملة حول تحويل HTML مع Bun.