English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Questo esempio mostra come implementare ilPHPCrawl crawler library per catturare la playlist di Kugou. Condivido questo con tutti voi per riferimento, come segue:
Dopo aver guardato dei video su web crawler, ho avuto la tentazione di catturare qualcosa. Di recente, c'è stata una battaglia di表情包 su Facebook molto accesa, quindi ho pensato di catturare tutti gli表情包, ma non ho trovato un VPN adatto, quindi ho catturato le canzoni in evidenza di Kugou dell'ultimo mese e le descrizioni semplici locali. Il codice è scritto un po' disordinato, non sono molto soddisfatto e non voglio pubblicarlo per non fare brutta figura. Tuttavia, dopo aver riflettuto, è almeno la mia prima volta che catturo, quindi... è venuto fuori il seguente codice disgustoso~~~ (Poiché la quantità di dati catturati è relativamente piccola, non ho considerato la multiproceszione, ma ho guardato la documentazione di PHPCrawl e ho scoperto che la libreria PHPCrawl ha già encapsulato tutte le funzionalità che potevo pensare, rendendo la realizzazione molto semplice).
<?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; // Analisi della descrizione della canzone $matches = array(); $pat = "/<span>Nome:<\/span>([^(<br)]+)<br/"; $ret = preg_match($pat,$content,$matches); if($ret>0){ $songlistArr['title'] = $matches[1]; }else{ $songlistArr['title'] = ''; } // Analisi delle canzoni $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 da scavare $start_url="http://www.kugou.com/yy/special/index/1-0-2.html"; $crawler->setURL($start_url); // Riceviamo solo il contenuto dei file con il tipo di contenuto "text/html" $crawler->addContentTypeReceiveRule("#text/html#"); // estensione dei link $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"); // Memorizza e invia i dati dei cookie come fa un browser $crawler->enableCookieHandling(true); // Impostiamo il limite di traffico a 1 MB (1000 * 1024) (in byte, // per il testing non vogliamo "assorbire" l'intero sito) // Non ci sono limiti sulla dimensione della cattura $crawler->setTrafficLimit(0); // Abbastanza, ora iniziamo $crawler->go(); // Alla fine, una volta completato il processo, stampiamo una breve // report (per ulteriori informazioni vedere il metodo getProcessReport()) $report = $crawler->getProcessReport(); if (PHP_SAPI == "cli") $lb = "\n"; else $lb = "<br />"; echo "Sommario: " . $lb; echo "Link seguiti: " . $report->links_followed . $lb; echo "Documenti ricevuti: " . $report->files_received . $lb; echo "Bytes ricevuti: ".$report->bytes_received." bytes".$lb; echo "Tempo di esecuzione del processo: ".$report->process_runtime." sec".$lb; ?>
PS: Forniamo in più due strumenti molto convenienti per la generazione di espressioni regolari da consultare:
Strumento di test espressioni regolari JavaScript online:
http://tools.jb51.net/regex/javascript
Strumento di generazione espressioni regolari online:
http://tools.jb51.net/regex/create_reg
Per coloro che sono interessati a ulteriori contenuti relativi a PHP, è possibile consultare le sezioni speciali di questo sito: 'Sommaria delle espressioni regolari PHP', 'Manuale completo delle tecniche di manipolazione degli array PHP', 'Guida di base alla sintassi PHP', 'Sommaria delle tecniche di calcolo e operatori PHP', 'Guida di base alla progettazione orientata agli oggetti PHP', 'Sommaria delle tecniche di programmazione di rete PHP', 'Sommaria delle tecniche di utilizzo delle stringhe PHP', 'Guida di base all'operazione del database MySQL con PHP' e 'Riassunto delle tecniche di operazione dei database più comuni PHP'.
Spero che l'articolo descritto sia utile per la progettazione di programmi PHP.
Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright spetta ai rispettivi autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato editato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a notice#oldtoolbag.com (sostituisci # con @) per segnalare il problema e fornire prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.