Crawler_movie FTP-Download-Adresse
Site: http://www.dy2018.com/
Datenbank: mysql Konto: root Passwort: 123456
Tabellenanweisung erstellen: CREATE TABLE dy2008_url (id int(9) NOT NULL AUTO_INCREMENT, URL varchar(2000) NOT NULL, Status tinyint(2) NOT NULL, PRIMARY KEY(id));
Code:
<?php declare(ticks = 1); pcntl_signal(SIGQUIT, 'signal_handler'); pcntl_signal(SIGTERM, 'signal_handler'); $crawlers_pid = array(); $finish_count = 0; //信号处理函数 function signal_handler($signal) { global $crawlers_pid; if ($signal == SIGQUIT || $signal == SIGTERM) { foreach ($crawlers_pid as $pid) { posix_kill($pid,SIGTERM); } echo "---------- crawl task exit ----------"; global $con;//mysql exit(); } } //GET方式获取链接对应页面内容 function get_page_content($url) { $content = file_get_contents($url); return $content; } //POST方式获取链接对应页面内容 function get_page_content_by_post($url, $arr) { $arr = http_build_query($arr); $opts = array ( 'http' => array('method' => 'POST', 'header' => 'Content-type:application/x-www-form-urlencoded'.' Content-Length:'.strlen($data).'"', 'content' => $data) ); $context = stream_context_create($opts); $content = file_get_contents($url,false,$context); return $content; } //dy2018抓取主流程 function run_dy2018() { global $crawlers_pid; global $finish_count; $crawl_urls = array("http://www.dy2018.com/html/tv/hytv/", "http://www.dy2018.com/html/tv/hepai/", "http://www.dy2018.com/html/tv/gangtai/", "http://www.dy2018.com/html/tv/oumeitv/", "http://www.dy2018.com/html/tv/rihantv/", "http://www.dy2018.com/html/tv/tvzz/", "http://www.dy2018.com/0/", "http://www.dy2018.com/1/", "http://www.dy2018.com/2/", "http://www.dy2018.com/3/", "http://www.dy2018.com/4/", "http://www.dy2018.com/5/", "http://www.dy2018.com/6/", "http://www.dy2018.com/7/", "http://www.dy2018.com/8/", "http://www.dy2018.com/9/", "http://www.dy2018.com/10/", "http://www.dy2018.com/11/", "http://www.dy2018.com/12/", "http://www.dy2018.com/13/", "http://www.dy2018.com/14/", "http://www.dy2018.com/15/", "http://www.dy2018.com/16/", "http://www.dy2018.com/17/", "http://www.dy2018.com/18/", "http://www.dy2018.com/19/", "http://www.dy2018.com/20/"); $i = 0; while($i < count($crawl_urls)) { $pid = pcntl_fork(); if($pid == -1) { echo "system error. check it now!"; exit(); } else if($pid > 0){ $crawlers_pid[$i] = $pid; } else { $url = $crawl_urls[$i]; $con = mysql_connect("localhost", "root", "123456"); if(!$con) { die('Count not connect: '.mysql_error()); } mysql_select_db("mysql", $con); crawl_process($url); $finish_count++; } $i++; } //pcntl_waitpid可能会导致信号监听失败 while (true) { if($finish_count == count($crawlers_pid)) { echo "---------- crawl task finish ----------"; mysql_close(); exit(); } sleep(1); } } //从入口链接到其下所有下载页链接抓取过程 function crawl_process($url) { echo "start handle url:".$url; $page_idx = 1; $valid_tag = true; $info_url_pattern = '/\/i\/\d+.html/'; $ftp_url_pattern = '/ftp:\/\/.*?.(swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb)/i';//^$两个符号不起作用 while($valid_tag) { $page_url = get_page_index_url($url, $page_idx); printf("start crawl url:".$page_url."\n"); $page_content = get_page_content($page_url); $valid_tag = is_valid_page($page_content); if($valid_tag) { $matches_urls = array(); preg_match_all($info_url_pattern, $page_content, $matches_urls); $page_content = mb_convert_encoding($page_content, "UTF-8", "GBK"); for($i=0; $i<count($matches_urls[0]); $i++) { $detail_url = 'http://www.dy2018.com'.$matches_urls[0][$i]; $detail_page_content = get_page_content($detail_url); $detail_page_content = mb_convert_encoding($detail_page_content, "UTF-8", "GBK"); preg_match_all($ftp_url_pattern, $detail_page_content, $ftp_urls); $ftp_links = array(); for($j=0;$j<count($ftp_urls[0]); $j++) { $ftp_links[$j] = $ftp_urls[0][$j]; } $ftp_links_unique = array_values(array_unique($ftp_links)); foreach ($ftp_links_unique as $ftp_link) { mysql_query("insert into dy2018_url (url, status) values('$ftp_link','0')"); // echo mysql_error();//打印mysql错误 } sleep(1); } } $page_idx++; } } //获取页码对应的url链接 function get_page_index_url($url, $idx) { $idx_url = $url; if($idx == 1) { $idx_url = $idx_url.'index.html'; } else if($idx > 1){ $idx_url = $idx_url.'index_'.$idx.'.html'; } return $idx_url; } //根据页面内容判断链接是否有效 function is_valid_page($content) { return $content?true:false; } run_dy2018(); mysql_close(); ?>
Ergebnis:
Das Obige stellt die FTP-Download-Adresse crawler_movie einschließlich des relevanten Inhalts vor. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Der HTTP-Statuscode 520 bedeutet, dass der Server bei der Verarbeitung der Anfrage einen unbekannten Fehler festgestellt hat und keine genaueren Informationen bereitstellen kann. Wird verwendet, um darauf hinzuweisen, dass bei der Verarbeitung der Anforderung durch den Server ein unbekannter Fehler aufgetreten ist, der durch Serverkonfigurationsprobleme, Netzwerkprobleme oder andere unbekannte Gründe verursacht werden kann. Dies wird normalerweise durch Serverkonfigurationsprobleme, Netzwerkprobleme, Serverüberlastung oder Codierungsfehler verursacht. Wenn Sie auf einen Fehler mit dem Statuscode 520 stoßen, wenden Sie sich am besten an den Website-Administrator oder das technische Support-Team, um weitere Informationen und Unterstützung zu erhalten.

Der Grund für den Fehler ist NameResolutionError(self.host,self,e)frome, ein Ausnahmetyp in der urllib3-Bibliothek. Der Grund für diesen Fehler ist, dass die DNS-Auflösung fehlgeschlagen ist, d. h. der Hostname oder die IP-Adresse Der Lösungsversuch konnte nicht gefunden werden. Dies kann daran liegen, dass die eingegebene URL-Adresse falsch ist oder der DNS-Server vorübergehend nicht verfügbar ist. So beheben Sie diesen Fehler Es gibt möglicherweise mehrere Möglichkeiten, diesen Fehler zu beheben: Überprüfen Sie, ob die eingegebene URL-Adresse korrekt ist und stellen Sie sicher, dass sie zugänglich ist. Stellen Sie sicher, dass der DNS-Server verfügbar ist. Sie können es mit dem Befehl „ping“ in der Befehlszeile versuchen Um zu testen, ob der DNS-Server verfügbar ist, versuchen Sie, über die IP-Adresse statt über den Hostnamen auf die Website zuzugreifen, wenn Sie sich hinter einem Proxy befinden

Verstehen Sie die Bedeutung des HTTP 301-Statuscodes: Häufige Anwendungsszenarien der Webseitenumleitung. Mit der rasanten Entwicklung des Internets werden die Anforderungen der Menschen an die Webseiteninteraktion immer höher. Im Bereich Webdesign ist die Webseitenumleitung eine gängige und wichtige Technologie, die über den HTTP-301-Statuscode implementiert wird. In diesem Artikel werden die Bedeutung des HTTP 301-Statuscodes und häufige Anwendungsszenarien bei der Webseitenumleitung untersucht. Der HTTP-Statuscode 301 bezieht sich auf eine permanente Weiterleitung (PermanentRedirect). Wenn der Server die des Clients empfängt

So implementieren Sie den automatischen Sprung von HTTP zu HTTPS mit NginxProxyManager Mit der Entwicklung des Internets beginnen immer mehr Websites, das HTTPS-Protokoll zur Verschlüsselung der Datenübertragung zu verwenden, um die Datensicherheit und den Schutz der Privatsphäre der Benutzer zu verbessern. Da das HTTPS-Protokoll die Unterstützung eines SSL-Zertifikats erfordert, ist bei der Bereitstellung des HTTPS-Protokolls eine gewisse technische Unterstützung erforderlich. Nginx ist ein leistungsstarker und häufig verwendeter HTTP-Server und Reverse-Proxy-Server sowie NginxProxy

Unterschiede: 1. Unterschiedliche Definitionen, URL ist ein einheitlicher Ressourcen-Locator und HTML ist eine Hypertext-Markup-Sprache. 2. Es kann viele URLs in einer HTML-Seite geben, aber nur eine HTML-Seite kann in einer URL vorhanden sein eine Webseite, und URL bezieht sich auf die Website-Adresse.

Der HTTP-Statuscode 403 bedeutet, dass der Server die Anfrage des Clients abgelehnt hat. Die Lösung für den HTTP-Statuscode 403 ist: 1. Überprüfen Sie die Authentifizierungsdaten. Wenn der Server eine Authentifizierung erfordert, stellen Sie sicher, dass die richtigen Anmeldedaten angegeben werden. 2. Überprüfen Sie die IP-Adresseinschränkungen Die IP-Adresse des Clients ist eingeschränkt oder nicht auf der Blacklist. Wenn der Statuscode 403 mit den Berechtigungseinstellungen der Datei oder des Verzeichnisses zusammenhängt, stellen Sie sicher, dass der Client über ausreichende Berechtigungen zum Zugriff auf diese Dateien oder Verzeichnisse verfügt. usw.

Schnelle Anwendung: Praktische Entwicklungsfallanalyse von PHP Asynchroner HTTP-Download mehrerer Dateien Mit der Entwicklung des Internets ist die Funktion zum Herunterladen von Dateien zu einem der Grundbedürfnisse vieler Websites und Anwendungen geworden. In Szenarien, in denen mehrere Dateien gleichzeitig heruntergeladen werden müssen, ist die herkömmliche synchrone Download-Methode oft ineffizient und zeitaufwändig. Aus diesem Grund ist die Verwendung von PHP zum asynchronen Herunterladen mehrerer Dateien über HTTP eine zunehmend verbreitete Lösung. In diesem Artikel wird anhand eines tatsächlichen Entwicklungsfalls detailliert analysiert, wie PHP asynchrones HTTP verwendet.

Lösung: 1. Überprüfen Sie den Inhaltstyp im Anforderungsheader. 3. Verwenden Sie das entsprechende Codierungsformat. 5. Überprüfen Sie die serverseitige Unterstützung.
