Heim  >  Artikel  >  Backend-Entwicklung  >  Die PHPCrawl-Crawler-Bibliothek implementiert das Crawlen von Kugou-Wiedergabelisten

Die PHPCrawl-Crawler-Bibliothek implementiert das Crawlen von Kugou-Wiedergabelisten

小云云
小云云Original
2017-12-21 14:08:582088Durchsuche

Crawler ist eine sehr interessante Funktion. In diesem Artikel wird hauptsächlich die Methode der PHPCrawl-Crawler-Bibliothek zum Erfassen der Kugou-Wiedergabeliste vorgestellt. Freunde, die sie benötigen, können darauf zurückgreifen es kann jedem helfen.


<?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>").
    if (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[&#39;raw_url&#39;] = $DocInfo->url;
    //解析歌曲介绍
    $matches = array();
    $pat = "/<span>名称:<\/span>([^(<br)]+)<br/";
    $ret = preg_match($pat,$content,$matches);
    if($ret>0){
      $songlistArr[&#39;title&#39;] = $matches[1];
    }else{
      $songlistArr[&#39;title&#39;] = &#39;&#39;;
    }
    //解析歌曲
    $pat = "/<a title=\"([^\"]+)\" hidefocus=\"/";
    $matches = array();
    preg_match_all($pat,$content,$matches);
    $songlistArr[&#39;songs&#39;] = array();
    for($i = 0;$i < count($matches[0]);$i++){
      $song_title = $matches[1][$i];
      array_push($songlistArr[&#39;songs&#39;],array(&#39;title&#39;=>$song_title));
    }
    echo "<pre class="brush:php;toolbar:false">";
    print_r($songlistArr);
    echo "
"; } } $crawler = new MyCrawler(); // URL to crawl $start_url="http://www.kugou.com/yy/special/index/1-0-2.html"; $crawler->setURL($start_url); // Only receive content of files with content-type "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"); // Store and send cookie-data like a browser does $crawler->enableCookieHandling(true); // Set the traffic-limit to 1 MB(1000 * 1024) (in bytes, // for testing we dont want to "suck" the whole site) //爬取大小无限制 $crawler->setTrafficLimit(0); // Thats enough, now here we go $crawler->go(); // At the end, after the process is finished, we print a short // report (see method getProcessReport() for more information) $report = $crawler->getProcessReport(); if (PHP_SAPI == "cli") $lb = "\n"; else $lb = "
"; echo "Summary:".$lb; echo "Links followed: ".$report->links_followed.$lb; echo "Documents received: ".$report->files_received.$lb; echo "Bytes received: ".$report->bytes_received." bytes".$lb; echo "Process runtime: ".$report->process_runtime." sec".$lb; ?>

Verwandte Empfehlungen:

Erfahrungsaustausch beim Einstieg in Python-Crawler

Was ist ein Crawler? Was ist der grundlegende Prozess des Crawlers?

Python-Webcrawler-Tutorial

Das obige ist der detaillierte Inhalt vonDie PHPCrawl-Crawler-Bibliothek implementiert das Crawlen von Kugou-Wiedergabelisten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn