
I. Warum verteilte Crawler ablehnen?
Engagiert in der Datenerhebung der alten Fahrer zu verstehen, ist Stand-alone-Crawler wie trinken Milch Tee mit einem Strohhalm - berühren eine große Menge an Daten direkt in den Mund Krämpfe. Gewöhnliche Scrapy Rahmen kann ein paar Millionen Datenvolumen laufen, wenn Sie die Anti-Climbing rücksichtslose Website treffen, Minuten, um Ihre IP in den kleinen schwarzen Raum zu senden. DiesmalScrapy-Redis + Proxy IPDie Kombination ist wie der goldene Finger am Rad, die Möglichkeit, dezentral zu arbeiten und die Weste jederzeit zu wechseln.
II. das Betriebshandbuch für den Cluster-Einsatz Hardcore
Zuerst werden wir drei Server einrichten (eine virtuelle Maschine ist in Ordnung, wenn Sie es sich nicht leisten können) und die Redis-Datenbank installieren. Jetzt kommt der Clou: Scrapy-Projekte auf allen Maschineneinstellungen.pyDas alles muss von diesen Zeilen begleitet werden:
REDIS_URL = 'redis://Ihre Server-IP:6379' SCHEDULER = 'scrapy_redis.scheduler.Scheduler' DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
Denken Sie daran, die Crawler-Datei in das Verzeichnisstart_urlsWechseln Sie zum Lesen aus Redis:
def start_requests(self).
for url in self.server.lrange('Crawler Task Queue', 0, -1):: yield scrapy.Request(url.decode("utf-8")).
yield scrapy.Request(url.decode("utf-8"))
Drittens, der richtige Weg, um die Proxy-IP zu öffnen
Hier müssen wir unsere Stärken ausspielen.ipipgo-Proxy-DienstJetzt ist seine API so konzipiert, dass sie außerordentlich mühelos funktioniert. Fügen Sie eine Middleware zu middlewares.py hinzu:
import random
Klasse ProxyMiddleware.
proxy_list = [
'http://账号:密码@proxy.ipipgo.com:端口'.
Es wird empfohlen, hier dynamisch generierte API-Links zu verwenden
]
request.meta['proxy'] = random.choice(proxy_list)
Wichtige Erinnerung: Denken Sie daran, diePunkt der GleichzeitigkeitsreduzierungLeeren Sie den Proxy-IP-Pool nicht aus. Es wird empfohlen, 20-30 Gleichzeitigkeiten pro Knoten zu öffnen, je nach dem gekauften Paketverkehr.
| Fehlerszenario | Erste-Hilfe-Programm |
|---|---|
| Es erscheint der Statuscode 429 | Sofortige Proxy-IP-Umschaltung + reduzierte Crawling-Häufigkeit |
| Redis-Verbindungszeitüberschreitung | Feuereinstellungen prüfen + Wiederholungsmechanismus hinzufügen |
IV. Leitfaden zur Vermeidung von Fallstricken in der Praxis
1. Schreiben Sie niemals eine tote Proxy-IP in das Crawler-Skript, verwenden Sie ipipgo'sDynamische API-SchnittstelleSeine Familie kann 5000+ IPs pro Minute ändern.
2) Seien Sie nicht so stur, wenn Sie auf CAPTCHA stoßen, richten Sie eine automatische Wiederholungsrichtlinie ein und wechseln Sie die IP-Pakete. ipipgo's exklusiver IP-Pool ist zu diesem Zeitpunkt sehr nützlich.
3. loggen Sie sich ein, um eine hierarchische Verarbeitung durchzuführen, den Proxy-IP-bezogenen Fehlerbericht eine separate Datei, um die nachfolgende Optimierung zu erleichtern
V. White gemeinsame QA
F: Warum greift mein Crawler-Knoten immer nach Aufgaben?
A: Überprüfen Sie die BRPOP-Befehlskonfiguration von Redis, es wird empfohlen, verschiedene Warteschlangen für die Prioritätseinstufung zu verwenden
F: Was sollte ich tun, wenn ich eine Proxy-IP verwende oder blockiert werde?
A: 80% des Request-Headers sind nicht randomisiert, installieren Sie eine fake_useragent-Bibliothek und überprüfen Sie dann die Cookie-Behandlung
F: Wie wähle ich das richtige Paket für ipipgo?
A: Testphase mit Pay-per-Volumen, stabilen Lauf geschnitten monatlichen Paket. Gleichzeitigkeit mehr als 50 wählen Enterprise-Class-dynamischen Pool, gibt es Spezialisten zu tun IP Wartung
Abschließende Bemerkung: Verteilte Crawler sind keine Silberkugeln mit ipipgo'sIntelligenter Routing-Agentbevor es richtig losgeht. Denken Sie daran, die Crawler-Regeln regelmäßig zu aktualisieren, lassen Sie nicht zu, dass die Anti-Crawler-Strategie in der Grube aktualisiert wird. Wenn Sie irgendwelche Probleme bei der Bereitstellung haben, können Sie direkt @ ihren technischen Kundendienst, die Reaktionsgeschwindigkeit ist N mal schneller als der freie Agent...

