
PHP greifen die Seite muss: DOMDocument Kindermädchen Lehre
Das alte Eisen in der Datenerhebung beschäftigt sollte dieses Problem begegnet sein: die Ziel-Website, um die HTML-Struktur der Mutter nicht wissen, schreiben Sie eine gute Crawler-Skript direkt Streik zu ändern. Heute werden wir PHP eigenen DOMDocument Komponente verwenden, um Ihnen beizubringen, wie man elegant zerlegen die Struktur der Webseite, und dann mit demipipgoDer Proxy-IP-Dienst sorgt dafür, dass die Sammlung so beständig ist wie ein alter Hund.
Erstens: Warum sollte eine Proxy-IP für die Datenerfassung verwendet werden?
Viele Websites sind "Zugangskontrollsystem" installiert, die gleiche IP häufige Besuche sofort schwarz ziehen. Zu diesem Zeitpunkt ist es notwendig, wieipipgoEin solcher professioneller Proxy-Dienst ist wie die Vorbereitung einer Reihe von "Stellvertretern" für den Crawler. Um ein Beispiel zu nennen:
$proxy = 'http://username:password@gateway.ipipgo.io:9020';
$context = stream_context_create([
'http' => ['proxy' => $proxy]
]);
$html = file_get_contents('Ziel-URL', false, $context);
Das gateway.ipipgo.io in diesem Code ist ihr intelligentes Routing-Portal, das automatisch die am besten geeigneten Knoten zuweist. Nach dem Test mit seinem Proxy fiel die Wahrscheinlichkeit, blockiert zu werden, von 80% auf unter 5%.
Zweitens, DOMDocument Grundfunktion der drei Achsen
Sobald wir den Quellcode der Webseite haben, können wir damit beginnen, die Teile zu zerlegen:
$dom = new DOMDocument();
@$dom->loadHTML($html); // maskiert die Warnmeldung mit @
$xpath = new DOMXPath($dom);
// Beispiel: alle Produktpreise erfassen
$prices = $xpath->query('//span[@class="price"]'); }; $prices = $xpath->query('//span[@class="price"]'); }
foreach ($prices as $node) {
echo $node->nodeValue."";
}
Achten Sie auf diese beiden Schlaglöcher:
(1) Probleme mit der Kodierung von Webseiten werden mit mb_convert_encoding behandelt.
2. ignorieren Sie HTML-Parsing-Fehler mit @-Symbolen
III. praktisch: Programm zum Erwerb einer dynamischen Website
Wenn Sie auf eine Website stoßen, die Daten mit JS lädt, können Sie eine verteilte Erfassung mit Proxy-IP durchführen. Konfigurieren Sie den Erfassungscluster zum Beispiel wie folgt:
| Typ des Knotens | Gleichzeitigkeit | Umschaltstrategie |
|---|---|---|
| Domestic Residential IP | 10 Fäden | IP nach Anfrage ändern |
| Datenzentrum in Übersee IP | 5 Fäden | Stündliche IP-Änderungen |
Kosten oder AufwandipipgoAPI, um den IP-Pool zu erhalten:
$ip_list = json_decode(file_get_contents('https://api.ipipgo.com/getips?type=http&num=20'));
IV. ein Erste-Hilfe-Set für häufige Probleme
F: Was sollte ich tun, wenn ich keine Verbindung zur Proxy-IP herstellen kann?
A:Prüfen Sie zunächst das Format der Authentifizierungsinformationen, indem Sie das von ipipgo bereitgestellte Tool "Verbindungstest" für die Hintergrunddiagnose verwenden.
F: XPath ist korrekt geschrieben, kann aber die Daten nicht erfassen?
A: 80% der Webseite hat einen iframe, verwenden Sie zuerst die reguläre Positionierung auf den spezifischen Frame und analysieren Sie dann die
F: Plötzliche Verlangsamung der Akquisition?
A: Es kann sein, dass die Geschwindigkeitsbegrenzung der Website ausgelöst wurde. Es wird vorgeschlagen, eine zufällige Wartezeit in den Code einzufügen:
sleep(rand(1, 3)); // zufällig für 1-3 Sekunden schlafen
V. Versteckte Vorteile von ipipgo
Zusätzlich zu den grundlegenden Dienstleistungen der Agentur verfügt seine Familie über zwei weitere wichtige Merkmale:
1. Intelligentes WiederholungssystemAutomatische Umschaltung von ungültigen IPs
2. Schnittstelle zur DatenbereinigungAutomatisches Filtern von doppeltem Inhalt
Abschließend noch ein Ratschlag: Verwenden Sie nicht sleep(0) im Erfassungscode, die Windsteuerung der Website ist nicht vegetarisch. Verwenden Sie Proxy-IP + zufällige Verzögerung + automatische Umschaltung dreifachen Schutz, um die Sammlung Skript lange Lebensdauer zu lassen.

