
Praktische Übungen mit Python zum Crawlen von Daten ohne Blockierung von Zahlen
Kürzlich eine Menge von alten Eisen fragte mich, wie man Python verwenden, um Website-Daten zu erhalten, das Ergebnis ihrer eigenen schriftlichen Crawler läuft zwei Tage blockiert werden IP. diese Sache, die ich auch fiel vor drei Jahren, und dann fand ein magisches Werkzeug - Proxy-IP. heute, um ihre eigene Heimat mit dem nehmenipipgoService als Kastanie, um Ihnen zu zeigen, wie man die Routine spielt.
Warum lebt Ihr Crawler nicht länger als drei Tage?
Die Website ist nicht ein Narr, Menschen Anti-Creeper vor allem auf diese drei Indikatoren aussehen:Häufigkeit der Besuche, Merkmale der Anfragen, IP-SpurenDie IP des Crawlers ist die wichtigste Sache. Vor allem die IP dieser kann nicht, gewöhnliche Crawler mit festen IP verrückte Anfrage, genau wie die gleiche Person jede Minute in der Supermarktkasse 50 mal, die Sicherheitskräfte nicht fangen Sie fangen, wer?
Typische Code-Beispiele
importiere Anfragen
for page in range(1,100): url = f'{page}'.
url = f'https://xxx.com/list?page={Seite}'
r = requests.get(url) swipe mit der gleichen IP
Der richtige Weg zur Eröffnung einer Proxy-IP
Hier empfohlenipipgovon dynamischen Wohn-Proxys ist ihr IP-Pool so lächerlich groß (angeblich 90 Millionen +), dass die Website nicht erkennen kann, ob es sich bei jeder Anfrage nach einer anderen Live-Benutzer-IP um eine echte Person oder eine Maschine handelt.
So sollte ein zuverlässiger Crawler aussehen
Anfragen importieren
from random importieren Auswahl
proxies_pool = [
'112.85.130.93:3328',
'120.33.240.211:1188', ...
... Hier werden die von ipipgo bereitgestellten Proxies abgelegt.
]
url = 'https://目标网站.com'
headers = {'User-Agent': 'Mozilla/5.0'}
for _ in range(10): proxy = {'http': Auswahl(proxies_pool)}
proxy = {'http': auswahl(proxies_pool)}
response = requests.get(url, headers=headers, proxies=proxy)
print(response.text[:200]) druckt die ersten 200 Zeichen zur Bestätigung des Erfolgs
Fünf Anti-Blockier-Mätzchen
1. IP-RotationsrhythmusSeien Sie nicht dumm und wechseln Sie die IPs bei jeder Anfrage, wechseln Sie in zufälligen Abständen, wie es echte Menschen tun. Zum Beispiel, besuchen Sie 3-8 mal, um eine zu ändern, in der Mitte eines zufälligen warten 1-3 Sekunden!
2. Die Kopfzeilen der Anfragen sollten realistisch seinDenken Sie daran, die übliche Browser-UA mitzubringen, und verwenden Sie nicht den Standard-Request-Header von Python!
3. Mechanismus für fehlgeschlagene WiederholungsversucheWenn Sie einen 403/429-Fehlercode erhalten, machen Sie eine Pause und versuchen Sie es mit einer anderen IP-Adresse erneut.
4. Strömungsausbreitung: Bleiben Sie nicht an einer Seite hängen, sondern besuchen Sie mehrere Seiten!
5. Auswahl des ProtokollsEinige Websites werden eher mit https als mit http authentifiziert.
Praktisch: Preisdaten für den elektronischen Handel einholen
Als Fuchs wollen Sie die Preisschwankungen eines bestimmten Ostprodukts beobachten:
1. zuipipgoEröffnen Sie ein Umlagepaket im Backoffice
2. ihre API verwenden, um die aktuelle Liste der Proxys zu erhalten
3) Fangen Sie die Seite jede halbe Stunde ein, und achten Sie darauf, dass Sie sie nicht genau zum richtigen Zeitpunkt einfangen.
4. automatische Unterbrechung der IP und erneuter Versuch, wenn ein CAPTCHA auftritt.
Erweiterte Version mit Ausnahmebehandlung
Anfragen importieren
Importzeit
def smart_crawler(url): max_retry = 3
max_wiederholung = 3
for _ in range(max_retry):: _ in range(max_retry).
try: proxy = get_ipipgo_proxy() hier ruft ipipgo_proxy auf.
proxy = get_ipipgo_proxy() Hier rufen wir die ipipgo API auf, um eine neue IP zu erhalten.
response = requests.get(url, proxies=proxy, timeout=8)
if 'CAPTCHA' in response.text: 'CAPTCHA' in response.text: 'CAPTCHA' in response.text.
raise Exception('Authentifizierung ausgelöst')
return antwort.text
except Exception as e.
print(f "Fehler: {e}, vorbereiten, IP zu ändern")
time.sleep(2_) exponentielle Backoff-Wartezeit
return Keine
Häufig gestellte Fragen QA
F: Was sollte ich tun, wenn meine Proxy-IP sehr langsam ist?
A: Wählen Sie den richtigen Agententyp! WieipipgoDie Latenzzeit des statischen Residential Proxy kann auf weniger als 200 ms reduziert werden, was mehr als doppelt so schnell ist wie ein normaler Serverraum-Proxy.
F: Wie kann ich prüfen, ob der Agent gültig ist?
A: Es wird empfohlen, diese Erkennungsschnittstelle zunächst mit einer kleinen Gruppe von IPs zu testen:
Erkennungscode:
resp = requests.get('http://httpbin.org/ip', proxies=proxy)
print(resp.json()) aktuell verwendete IPs anzeigen
Q:Was sollte ich tun, wenn ich auf eine Website stoße, die nicht kletterfähig ist?
A: rechtzeitiges Umschalten von IP-Protokolltypen, wie z.B. von HTTP auf Socks5. wie ipipgo Hintergrund kann direkt verschiedene Protokolltypen von Proxies filtern, dieser Punkt ist besonders praktisch.
Empfehlungen des Herzrettungsprogramms
Wenn Sie zu faul sind, es selbst zu werfen, gehen Sie direkt zuipipgos Smart Proxy-Paket. Ihre Rotationsstrategie ist selbst entwickelt, angeblich in der Lage, automatisch das Schutzniveau der Zielsite anzupassen, die Erfolgsquote von Neulingen mit diesem kann bis zu 90% betragen. Der jüngste Doppel-Elfer undErste Bestellung 50% RabattTätigkeit, die viel kostengünstiger ist als der Aufbau eines eigenen Agentenpools.

