هذا هو الزاحف الذي استخدمته لمكتبة الشاملة. الشفرة غير مرتبة، وهيكل البريمج غير مستدام؛ لأنني أردته لحاجة سريعة ولم أتعب نفسي لأجعله وظيفيًا functional.
قمت في الماضي بعمل سكريبت بالجافا و باستعمال مكتبة JSoup لزاحف بسيط لجمع عناوين مواقع نت من Yahoo Directory و Dmoz حيث كنت احتاج عدد كبير من العناوين لتحليلها و فرزها (مشروع بحثي)
كتبت الكثير من ال Web Scrappers فيما سبق، وولدينا خدمة تعتمد على اعتماداً كلياً على بيانات نجلبها من موقع معروف في مجال الأسهم ونأخذ منه الاسعار، والمشكلة ان الموقع غير تصميمه ربما 3 مرات فاضطرينا اعادة كتابة الكود كلما حصل تغيير في بنية الصفحة. واخر تحديث قام بتطبيق تشفير على الصفحة بحيث ترجع مشفرة وهناك اكواد جافا سكربت تقوم بفكها وعرض البيانات. وطبعاً هذا صعب جداً وقد تحتاج لمعرفة الالية. الحل الاخير الذي قمنا به هو تشغيل متصفح داخل التطبيق باستخدام Chromium Embedded Framework والمتصفح سوف يقوم بالعملية وفك التشفير ومن ثم نقوم بتخزين النتيجة على ملف خارجي، ومن ثم يقوم برنامج ال Parser بالقراءة واستخراج اليبانات منها.
طبعاً هذا الحل هو الحل الناجح لعمليات التشفير التي تضعها بعض المواقع لتشفير محتوياتها من ال Scrapping وهذه الطريقة هي التي افداتنا:
http://joelverhagen.com/blo...
ايضاً من الScrapper الاخرى هو لسحب الكتب من موقع كتب المعروف kutub.info وتقريباً سحب حوالي 40 قيقا من الكتب العربية انذاك:
https://github.com/WajdyEss...
الزاحف عبارة عن كود برمجي يقوم بالدخول إلى موقع ما و "يزحف داخله" بغية الحصول على جزء منه أو جمع معلومات خاصة عنه و قد تكون نصوصاً أو صور أو روابط أو حتى أجزاء من الــ HTML الخ. و من ثم يقوم بإدراجها في قاعدة بيانات للاستخدام أو التحليل أو عرضها في موقع آخر مثلاً.
أوقات دخول المستخدمين للموقع، يقوم الزاحف بمراقبة حساب المستخدم لتسجيل الاوقات التي تواجد فيها.
عدد مبيعات البائعين :) يقوم أيضا بمراقبة الصفحة الشخصية لمعرفة الزيادة في عدد المبيعات للعضو.
إشعاري بوجود تعليقات جديدة على أحد مواضيع المجتمع من خلال الزحف على التعليقات.
إشعاري بوجود طلبات جديدة خاصة بالبرمجة من خلال الزحف في مجتمع الطلبات الغير موجودة وجلب آخر 10 مواضيع تم إضافتها، ثم يقوم بتحليل العنوان أو نص الطلب لمعرفة إن كان خاص بالبرمجة.
اللغة المستخدمة PHP
لمراقبة حالة المستخدم، شغلت corn job تعمل كل دقيقة.
الفكرة ببساطة هي جلب محتويات الصفحة ثم أستخراج البيانات التي أريدها.
مثال على مراقبة اوقات تواجد العضو، في صفحة العضو الشخصية، اذا كان العضو متواجد حاليا سيكون هناك دائرة خضراء مكتوب بجانبها "الأن" إذا فهدف الزاحف هو البحث عن الوسم الخاص بالدائرة الخضراء فإذا كان موجود اخزن الوقت والتاريخ.
نفس المبدأ في حال أريد أن اعرف إن كان هناك تعليقات جديدة على موضوع معين، يتم تضمين التعليقات داخل div له ال class التالي 'post_reply ' ما أقوم به هو عد هذه ال divs ومقارنتها بالعدد القديم إذا كان هناك اختلاف فهذا يعني وجود تعليقات جديدة.
لإستخراج الوسوم إستخدمت ال Regular expressions هناك مكتبات لعمل html parsing لكن ال Regular expressions أدت الغرض بالنسبة لي.