Ohne Proxy-IP wird die Arbeit an Crawlern schwierig sein, daher müssen viele Crawler-Ingenieure effiziente und stabile Proxy-IP kaufen. Mit einer hochwertigen Proxy-IP kannst du dich zurücklehnen und entspannen? Die Dinge sind nicht so einfach, und es ist auch notwendig, das System zu optimieren, Ressourcen rational zuzuweisen, die Arbeitseffizienz zu verbessern und Crawler-Arbeiten effizienter, schneller und stabiler durchzuführen.
Option 1: Jeder Prozess wählt zufällig eine Liste von IPs aus der Schnittstellen-API aus (zum Beispiel durch das Extrahieren von 100 IPs gleichzeitig), um sie durchzufahren, und ruft dann die API auf, um sie zu erhalten, falls sie fehlschlägt, und die allgemeine Logik ist wie folgt:
1. Jeder Prozess (oder Thread) ruft zufällig einen Batch von IPs aus der Schnittstelle ab und versucht, Daten in einer Schleife aus der IP-Liste zu beziehen.
2. Wenn der Zugriff erfolgreich ist, greifen Sie weiter den nächsten aus.
3. Wenn es fehlschlägt (wie Timeout, Verifizierungscode usw.), nehmen Sie eine Charge von IPs aus der Schnittstelle und versuchen Sie weiter.
Nachteile der Lösung: Jede IP hat ein Verfallsdatum; wenn 100 extrahiert werden, kann bei Verwendung des 10. IP der Großteil letzterer ungültig sein. Wenn du eine HTTP-Anfrage mit einem Verbindungs-Timeout von 3 Sekunden und einem Lese-Timeout von 5 Sekunden einrichtest, könntest du 3-8 Sekunden Zeit verschwenden, und vielleicht können diese 3-8 Sekunden dutzende Male abgerufen werden.
Option 2: Jeder Prozess nimmt eine zufällige IP von der Schnittstellen-API und ruft dann die API auf, um eine IP zu erhalten, falls sie fehlschlägt; die allgemeine Logik lautet wie folgt:
1. Jeder Prozess (oder Thread) ruft zufällig eine IP von der Schnittstelle ab und nutzt diese IP, um auf Ressourcen zuzugreifen.
2. Wenn der Zugriff erfolgreich ist, greifen Sie weiter den nächsten aus.
3. Wenn es fehlschlägt (wie Timeout, Verifizierungscode usw.), wählen Sie zufällig eine IP aus der Schnittstelle aus und versuchen weiter.
Nachteile: Das Aufrufen von APIs zur Erholung von IP-Adressen ist sehr häufig, was großen Druck auf den Proxy-Server ausübt, die Stabilität der API-Schnittstelle beeinträchtigt und möglicherweise beim Extrahieren eingeschränkt wird. Dieses System ist ebenfalls ungeeignet und kann nicht nachhaltig und stabil betrieben werden.
Option 3: Zuerst extrahiert man eine große Anzahl von IPs und importiert sie in die lokale Datenbank, dann entnimmt man die IP aus der Datenbank; die allgemeine Logik ist wie folgt:
1. Eine Tabelle in der Datenbank erstellen, ein Importskript schreiben, die API pro Minute anfordern (konsultieren Sie die Empfehlungen des Proxy-IP-Dienstanbieters) und die IP-Liste in die Datenbank importieren.
2. Erfassung der Importzeit, IP, Port, Verfallszeit, IP-Verfügbarkeitsstatus und anderer Felder in der Datenbank;
3. Schreibe ein Grab-Skript, das Crab-Skript liest die verfügbare IP aus der Datenbank, und jeder Prozess erhält eine IP aus der Datenbank zur Verfügung.
4. Führen Sie Crawling durch, bewerten Sie die Ergebnisse, verarbeiten Sie Cookies usw. Solange es einen Verifizierungscode oder einen Fehler gibt, geben Sie diese IP auf und wechseln Sie zu einer neuen IP.
Diese Lösung vermeidet effektiv den Verbrauch von Proxy-Server-Ressourcen, verteilt effektiv die Nutzung von Proxy-IP, ist effizienter und stabiler und gewährleistet die Beständigkeit und Stabilität der Crawler-Arbeit. |