التصاميم · فصل ٩

تصميم Web Crawler

URL frontier · politeness · robots.txt · bloom filter
🎯 الهدف: روبوت يلف على الويب، ينزّل صفحات، ويطلع لينكات، من غير ما يخنق المواقع.

بيعمل إيه؟

روبوت بيلف على الويب: ينزّل صفحات، يطلع منها لينكات، وينزّلها هي كمان. بيتستخدم في محركات البحث، الأرشفة، والتنقيب في الداتا. المطلوب: scalable، مؤدب مع المواقع، robust، وسهل تضيف عليه.

خط الإنتاج

وبعد الـ parser: هل المحتوى ده شوفناه؟ نطلّع اللينكات، نفلترها، نشوف اللينك ده اتزار قبل كده ولا لأ، ونرجّعه للـ frontier.

  • Content seen: قارن hash الصفحة بدل ما تقارنها حرف حرف. حوالي ٢٩٪ من الويب مكرر.
  • URL seen: Bloom filter أو hash table عشان متزورش نفس اللينك مرتين.

الـ Deep dive

الموضوعالفكرة
BFS مش DFSالويب عميق جدًا، فالـ BFS أنسب. بس الـ BFS العادي ممكن يضرب نفس الموقع بريكوستات كتير
Politenessطابور لكل host، و worker واحد لكل طابور مع delay بين الريكوستات
Priorityرتّب اللينكات حسب الأهمية: PageRank، الترافيك، سرعة التحديث
Freshnessأعد زيارة الصفحات حسب تاريخ تحديثها وأهميتها
robots.txtاحترم اللي الموقع مش عايزك تزحف عليه، وكاش الملف
Performanceزحف موزّع، DNS cache، سيرفرات قريبة جغرافيًا، و timeout قصير
Spider trapsلينكات لا نهائية زي /a/b/a/b/... — حط حد أقصى لطول اللينك وفلترة

Checklist الزحف

🧠 اختبر نفسك
١) ليه BFS أنسب من DFS في الزحف؟
الويب عميق جدًا. الـ DFS ممكن يغوص في موقع واحد ومش يطلع. الـ BFS بيلف على المستوى الأول أوسع.
٢) إزاي متضربش نفس الموقع بألف ريكوست في الثانية؟
طابور لكل host، و worker واحد مع delay بين الطلبات.
٣) ليه نقارن hash الصفحة مش الصفحة نفسها؟
لأن المقارنة حرف حرف تقيلة، وحوالي ٢٩٪ من الويب محتوى مكرر.
٤) لينك بيولّد لينك أطول منه للأبد. اسم الفخ إيه؟
Spider trap. الحل حد أقصى للطول وفلترة النمط المتكرر.