• ألية عمل الـ Web Crawlers هي نفس ألية عمل المتصفحات من جِهة تحليل وثائق HTML .

  • ببساطة الـ Web Crawlers هو عملية إرسال طلب لصفحة ما ولتكن https://io.hsoub.com وإستلام الرد وهو عبارة عن وثيقة HTML بها جميع المحتوى الذي يتم ظهوره بشكل منسق على المتصفح ولكن بصورته الخام كـوثيقة HTML، من تلك الوثيقة أستطيع إستخراج البيانات التي أحتاجها من خلال التعابير القياسية Regular Expressions أو من خلال أي من مكتبات الـ DOM لتسهيل عملية إستخلاص البيانات من تلك الوثائق، يزداد الأمر تعقيداً في حالة وجود صفحات تحتاج تسجيل دخول أو صفحات تتعرف على نوعية المتصفح لعرض محتوى مناسب وغيره من تلك الأمور ويزاد الأمر تعقيداً حينما تصادف تقنيات كالـ AJAX أو Single One Page مستخدمة في الموقع.

شكرا لك :)

ولكن .. كيف تجلب هذه الادوات جميع صفحات الموقع ؟ هل تقوم بعملية Brute Force اي تخمين ام ماذا ؟؟

  • تستخدم نمط تتبع الروابط، على سبيل المثال سأقوم بجلب محتوى الصفحة: https://io.hsoub.com/new ومنها سأقوم بإستخلاص جميع روابط الموضوعات لأبدأ في جلب البيانات من كل رابط على حدة بنفس الطريقة وهكذا.

مثال بلغة php لما أشرت له من نمط تتبع الروابط، يقوم الكود بالبحث عن روابط المواضيع وإستخلاصها كالتالي:

    $html = file_get_contents('https://io.hsoub.com/new');
    $domain = 'https://io.hsoub.com';
    preg_match_all('/<div class\=\"postContent\">.*?<\/h2>/s', $html, $match);
    foreach($match[0] as $value)
    {
        preg_match('/href="([^\n\t\s"]+)/', $value, $match2);
        $link = str_replace('href="','',$match2[0]);
        if(preg_match('/https?/i', $link)){
            $links[] = $link;
        }
        else
        {
            $links[] = $domain.$link;
        }
    }

    foreach($links as $link){
        echo "<div><a href='{$link}'>{$link}</a></div>";
    }

رائع :)

شكرا لك


ثقافة

لمناقشة المواضيع الثقافية، الفكرية والاجتماعية بموضوعية وعقلانية.

24.1 ألف متابع