یک CRAWLER ساده با زبان PHP

سلام

بعد از چند ماه دوباره یه پست ارسال کنم شاید دستم راه افتاد  😀

الان مجبور شدم که یک اسکریپت ساده crawler بسازم که بتونه داخل وب سایت گردش کنه و محتوای صفحه رو ببینه

خب قصد دارم یک فانکشن ساده بسازم که یک ورودی آدرس وی سایت بگیره و بره داخل اون بگرده و عنوان + متا تگ توضیحات رو ببینه

من نمیخوام اون مقادیر رو جایی ذخیره کنم اما شما اگر خواستید اینکار رو میتونید انجام بدین

این فانکشن یک ورودی دیگه هم ازتون میخواد که عمق گردش صفحات رو مشخص میکنه . یعنی شما مشخص میکنید که توی هر صفحه اگر لینکی دید چه تعدادی از اون رو باز کن و بره داخلش که من پیشفرض روی ۲ قرار دادم ( هر چی این عدد بیشتر باشد طبیعتا زمان بیشتری هم صرف اجرای اسکریپت میشه )


<?php
function crawl_page($url, $depth = 2)
{
    static $seen = array();
    if (isset($seen[$url]) || $depth === 0) {
        return;
    }

    $seen[$url] = true;

    $dom = new DOMDocument('1.0');
    @$dom->loadHTMLFile($url);

    $data = implode("", file($url));
    preg_match ("/<title>([^`]*?)<\/title>/", $data, $match);
    $title = $match[1];

    $metaTags = get_meta_tags($url);
    $description = $metaTags['description'];


    $anchors = $dom->getElementsByTagName('a');
    foreach ($anchors as $element) {
        $href = $element->getAttribute('href');
        if (0 !== strpos($href, 'http')) {
            $path = '/' . ltrim($href, '/');
            if (extension_loaded('http')) {
                $href = http_build_url($url, array('path' => $path));
            } else {
                $parts = parse_url($url);
                $href = $parts['scheme'] . '://';
                $href .= $parts['host'];
                $href .= dirname($parts['path'], 1).$path;
            }
        }
        crawl_page($href, $depth - 1);
    }
}
crawl_page("https://YOURSITE.COM/", 2);

الان اگر جای YOURSITE.COM آدرس مد نظرتون رو وارد کنید و اسکریپت رو اجرا کنید ، توی متغییر $title عنوان صفحه رو دارید و داخل متغییر $description محتوای تگ توضیحات رو دارید

 

البته این اسکریپت خیلی ساده هست و شما میتونید خیلی بهترش کنید اما در حد ساخت یک sitemap generator کوجیک برای سایتتون میتونه مفید باشد

پاینده و پیروز باشید 😉

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *