Heim >Backend-Entwicklung >PHP-Tutorial >Wie baue ich einen einfachen PHP-Crawler, um Links und Inhalte von einer Website zu extrahieren?
Einen einfachen PHP-Crawler erstellen
Das Crawlen von Websites und das Extrahieren von Daten ist eine häufige Aufgabe in der Webprogrammierung. PHP bietet ein flexibles Framework zum Erstellen von Crawlern, mit dem Sie auf Informationen von Remote-Webseiten zugreifen und diese abrufen können.
Um einen einfachen PHP-Crawler zu erstellen, der Links und Inhalte von einer bestimmten Webseite sammelt, können Sie den folgenden Ansatz verwenden :
Verwendung eines DOM-Parsers:
<?php function crawl_page($url, $depth = 5) { // Prevent endless recursion and circular references static $seen = array(); if (isset($seen[$url]) || $depth === 0) { return; } // Mark the URL as seen $seen[$url] = true; // Load the web page using DOM $dom = new DOMDocument('1.0'); @$dom->loadHTMLFile($url); // Iterate over all anchor tags (<a>) $anchors = $dom->getElementsByTagName('a'); foreach ($anchors as $element) { $href = $element->getAttribute('href'); // Convert relative URLs to absolute URLs if (0 !== strpos($href, 'http')) { $path = '/' . ltrim($href, '/'); if (extension_loaded('http')) { $href = http_build_url($url, array('path' => $path)); } else { $parts = parse_url($url); $href = $parts['scheme'] . '://'; if (isset($parts['user']) && isset($parts['pass'])) { $href .= $parts['user'] . ':' . $parts['pass'] . '@'; } $href .= $parts['host']; if (isset($parts['port'])) { $href .= ':' . $parts['port']; } $href .= dirname($parts['path'], 1) . $path; } } // Recursively crawl the linked page crawl_page($href, $depth - 1); } // Output the crawled page's URL and content echo "URL: " . $url . PHP_EOL . "CONTENT: " . PHP_EOL . $dom->saveHTML() . PHP_EOL . PHP_EOL; } crawl_page("http://example.com", 2); ?>
Dieser Crawler verwendet einen DOM-Parser, um durch den HTML-Code der Webseite zu navigieren, alle Anker-Tags zu identifizieren und allen Links zu folgen sie enthalten. Es sammelt den Inhalt der verlinkten Seiten und gibt ihn in die Standardausgabe aus. Sie können diese Ausgabe in eine Textdatei umleiten, um die gesammelten Daten lokal zu speichern.
Zusätzliche Funktionen:
Das obige ist der detaillierte Inhalt vonWie baue ich einen einfachen PHP-Crawler, um Links und Inhalte von einer Website zu extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!