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

Beispiel zur Implementierung der PHPCrawl-Spider-Library zur Ernte von Kugou Playlisten

Dieser Artikel beschreibt, wie die Crawler-Bibliothek PHPCrawl verwendet wird, um Liederlisten von Kugou abzugreifen. Hier ist eine gemeinsame Referenz, wie folgt:

Nachdem ich Videos über Netzwerk-Crawler gesehen habe, habe ich es eilig, etwas zu krabbeln. Der Krieg der Emojis auf Facebook ist in letzter Zeit sehr heftig, daher wollte ich alle Emojis herunterladen, fand aber一时 keine passende VPN und habe daher die neuesten ausgewählten Lieder und kurzen Beschreibungen von Kugou heruntergeladen. Der Code ist etwas durcheinander und ich bin selbst nicht zufrieden damit, ihn nicht hinauszugeben, um mich zu blamieren. Aber nach einem Nachdenken, das ist zumindest mein erstes Krabbeln, also...es gibt folgenden unansehnlichen Code~~~ (Da die Menge der gesammelten Daten较小, habe ich nicht über mehrere Prozesse nachgedacht, aber ich habe das Dokument von PHPCrawl überprüft und festgestellt, dass die Bibliothek PHPCrawl alle Funktionen, die ich mir vorstellen kann, bereits verpackt hat und es sehr einfach ist, sie umzusetzen)

<?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['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
      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);
// 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 = "<br />";
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; 
?>

PS: Hier noch eine2Ein sehr praktisches Tool für reguläre Ausdrücke, das alle zur Verfügung stehen

Online-Testtool für reguläre Ausdrücke in JavaScript:
http://tools.jb51.net/regex/javascript

Online-Generator für reguläre Ausdrücke:
http://tools.jb51.net/regex/create_reg

Weitere Informationen zu PHP finden Sie in den Themenbereichen dieser Website: "Zusammenfassung der Verwendung von PHP-Regulären Ausdrücken", "Vollständiges Handbuch zur Verwendung von PHP-Arrays (Array)", "Einführung in die Grundlagen der PHP-Syntax", "Zusammenfassung der Verwendung von Operatoren und Ausdrücken in PHP", "Einführung in die objektorientierte PHP-Programmierung", "Zusammenfassung der PHP-Netzwerkprogrammierung", "Zusammenfassung der Verwendung von Zeichenfolgen (string) in PHP", "php"+Einführung in die mysql-Datenbankoperationen und Zusammenfassung der häufigsten Datenbankoperationen in php

Ich hoffe, dass der in diesem Artikel beschriebene Inhalt Ihnen bei der PHP-Programmierung helfen wird.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetnutzern freiwillig bereitgestellt und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht von Hand bearbeitet. Sie übernimmt keine Haftung für rechtliche Fragen. Wenn Sie urheberrechtlich anstößige Inhalte entdecken, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden:3codebox.com (Bitte ersetzen Sie # durch @, wenn Sie eine Beschwerde einreichen, und fügen Sie relevante Beweise bei. Sobald die Beschwerde bestätigt wird, wird diese Website die beanstandeten urheberrechtlichen Inhalte sofort löschen.)

Vermutlich gefällt Ihnen