بيعمل إيه؟
روبوت بيلف على الويب: ينزّل صفحات، يطلع منها لينكات، وينزّلها هي كمان. بيتستخدم في محركات البحث، الأرشفة، والتنقيب في الداتا. المطلوب: scalable، مؤدب مع المواقع، robust، وسهل تضيف عليه.
خط الإنتاج
Seed URLs
URL Frontier
Downloader+ DNS
Parser
وبعد الـ 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. الحل حد أقصى للطول وفلترة النمط المتكرر.