English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

مثال على تنفيذ مكتبة PHPCrawl لجمع قوائم الموسيقى من Kugou

این مثال، روش‌های جمع‌آوری لیست آهنگ‌های کدوگ با استفاده از کتابخانه PHPCrawl را توضیح می‌دهد. این را به اشتراک می‌گذارم تا همه بتوانند از آن بهره‌مند شوند، به شرح زیر:

بعد از تماشای ویدیوهای مرتبط با کروال اینترنتی، دستم قوی شد و خواستم چیزی را بگیرم. اخیراً در فیسبوک جنگ عکس‌های کارتونی بسیار شدید بود، بنابراین فکر کردم همه عکس‌های کارتونی را بگیرم، اما در حال حاضر VPN مناسب پیدا نکردم، بنابراین آهنگ‌های برتر و توضیحات ساده کدوگ را به محلی کشیدم. کد نوشته شده کمی بی‌نظم بود و خودم از آن راضی نبودم و نمی‌خواستم آن را به نمایش بگذارم تا دیگران ببینند. اما بعد از فکر کردن، فکر کردم این حداقل اولین تجربه من از کروال بود، بنابراین... به این کد غیرقابل تحمل رسیدم~~~ (به دلیل کمبود داده‌های جمع‌آوری شده، به فکر چندین فرآیند نبودم، اما پس از بررسی مستندات PHPCrawl، متوجه شدم که کتابخانه PHPCrawl تمامی امکاناتی که فکر می‌کردم را بسته‌بندی کرده است و استفاده از آن بسیار آسان است)

<?php
header("Content-type:text/html;charset=utf-8");
// It may take a whils to crawl a site ...
set_time_limit(10000);
include("libs/PHPCrawler.class.php");
class MyCrawler extends PHPCrawler {
  function handleDocumentInfo($DocInfo) {
    // Just detect linebreak for output ("\n" in CLI-mode, otherwise "<br>").
    إذا (PHP_SAPI == "cli") $lb = "\n";
    else $lb = "<br />";
    $url = $DocInfo->url;
    $pat = "/http:\/\/www\.kugou\.com\/yy\/special\/single\/\d+\.html/";
    if(preg_match($pat,$url) > 0){
    $this->parseSonglist($DocInfo);
    }
    flush();
  }
  public function parseSonglist($DocInfo){
    $content = $DocInfo->content;
    $songlistArr = array();
    $songlistArr['raw_url'] = $DocInfo->url;
    //解析歌曲介绍
    $matches = array();
    $pat = "/<span>名称:<\/span>([^(<br)]+)<br/";
    $ret = preg_match($pat,$content,$matches);
    if($ret>0){
      $songlistArr['title'] = $matches[1];
    }else{
      $songlistArr['title'] = '';
    }
    //解析歌曲
    $pat = "/<a title=\"([^\"]+)\" hidefocus=\"/";
    $matches = array();
    preg_match_all($pat,$content,$matches);
    $songlistArr['songs'] = array();
    for($i = 0;$i < count($matches[0]);$i++){
      $song_title = $matches[1][$i];
      array_push($songlistArr['songs'],array('title'=>$song_title));
    }
    echo "<pre>";
    print_r($songlistArr);
    echo "</pre>";
    }
  }
$crawler = new MyCrawler();
// URL to crawl
$start_url="http://www.kugou.com/yy/special/index/1-0-2.html";
$crawler->setURL($start_url);
// استقبل فقط محتويات ملفات بهذا النوع من المحتوى "text/html"
$crawler->addContentTypeReceiveRule("#text/html#");
// تمدد الروابط
$crawler->addURLFollowRule("#http://www\.kugou\.com/yy/special/single/\d+\.html$# i");
$crawler->addURLFollowRule("#http://www.kugou\.com/yy/special/index/\d+-\d+-2\.html$# i");
// احفظ并发送 بيانات ملفات الكعك مثل متصفح يفعل
$crawler->enableCookieHandling(true);
// ضع الحد الأقصى للنقل إلى 1 MB (1000 * 1024) (بالمئات من البايت,
// للاختبار لا نريد "الإنتهاك" لل موقع كامل)
// لا يوجد حد للاحجام في الاستخراج
$crawler->setTrafficLimit(0);
// Thats enough, now here we go
$crawler->go();
// في النهاية، بعد انتهاء العملية، نقوم بطباعة قصيرة
// report (vea el método getProcessReport() para más información)
$report = $crawler->getProcessReport();
إذا (PHP_SAPI == "cli") $lb = "\n";
else $lb = "<br />";
إخراج "ملخص: ".$lb;
إخراج "روابط متابعة: ".$report->links_followed.$lb;
إخراج "مستندات استلمت: ".$report->files_received.$lb;
echo "Bytes received: ".$report->bytes_received." bytes".$lb;
echo "Process runtime: ".$report->process_runtime." sec".$lb; 
?>

النص التوضيحي: هنا نقدم لكم 2 أدوات مفيدة لتعبيرات النمط للمراجعة والاستخدام:

أداة اختبار تعبيرات النمط في JavaScript عبر الإنترنت:
http://tools.jb51.net/regex/javascript

أداة إنشاء تعبيرات النمط عبر الإنترنت:
http://tools.jb51.net/regex/create_reg

المزيد عن PHP يمكن للقراء المهتمين بالمراجعة في مقالات الموقع المخصصة: 'مقدمة لاستخدام تعبيرات النمط في PHP'، 'دليل شامل للتعامل مع قوائم PHP'، 'دليل البدء بتعلم أساسيات لغة PHP'، 'مقدمة لاستخدام العمليات الحسابية والوظائف في PHP'، 'دليل البدء ببرمجة تطبيقات PHP بأسلوب الأوبجكت أورينتيد'، 'مقدمة لاستخدام برمجة الشبكة في PHP'، 'مقدمة لاستخدام 字符串 في PHP'، 'دليل البدء بتعلم كيفية التعامل مع قواعد البيانات MySQL في PHP'، و 'مقدمة لاستخدام تقنيات التعامل مع قواعد البيانات الشائعة في PHP'.

آمل أن يساعدك محتوى هذا المقال في تصميم برامج PHP الخاصة بك.

بيان: محتوى هذا المقال تم جمعه من الإنترنت، ملكية المحتوى لصاحب الحقوق، تم جمع المحتوى من قبل المستخدمين عبر الإنترنت وتم تحميله بشكل تلقائي، هذا الموقع لا يمتلك حقوق الملكية، لم يتم تعديل المحتوى بشكل يدوي ولا يتحمل أي مسؤولية قانونية. إذا كنت قد وجدت محتوى يشتبه في حقوق النسخ، يرجى إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) للإبلاغ، وتقديم الدليل ذات الصلة، إذا تم التحقق من ذلك، سيتم حذف المحتوى المشبوه فوراً.

أنت قد تعجبك