
Warum ist es heutzutage so schwer, an Bestandsdaten zu kommen?
Vor kurzem, eine Reihe von quantitativen Handel Freunde und ich beschwerte sich, dass die Verwendung von Python direkt auf die Google Finance-Schnittstelle ist immer ein Problem. Entweder geben Sie plötzlich eine429 Zu viele ErsuchenDie Daten sind nicht einmal sichtbar. Was mehr ist, einige Bereiche der Netzwerkumgebung Port-Adresse kann nicht ping sein, sagen Sie dringend Menschen sind nicht dringend?
Ältere Fahrer spielen auf diese Weise mit Proxy-IPs
Haben Sie schon einmal einen altgedienten Crawler gesehen? Sie haben einen in der Tasche.Proxy-IP-PoolDer Server wird Sie nicht erkennen. Mit dem rotierenden Proxy von ipipgo zum Beispiel kann der Server bei jeder Anfrage nach einer anderen Weste nicht erkennen, wer Sie sind. Das ist wie ein Versteckspiel, bei dem man jedes Mal die Kleidung wechselt, so dass sich das Sicherheitspersonal nicht an Sie erinnern kann.
importiert Anfragen
von itertools importieren Zyklus
Proxy-Pool bereitgestellt von ipipgo (Beispiel)
proxies = [
"http://user:pass@gateway.ipipgo.com:30001",
"http://user:pass@gateway.ipipgo.com:30002".
"http://user:pass@gateway.ipipgo.com:30003"
]
proxy_pool = cycle(proxies)
def fetch_stock(symbol): current_proxy = next(proxy_pool)
aktuell_proxy = next(proxy_pool)
try.
resp = requests.get(
f "https://www.google.com/finance/quote/{Symbol}", proxies={"http": aktuell_proxy}, aktuell_proxy
proxies={"http": current_proxy}, timeout=10
timeout=10
)
return resp.text
except Exception as e.
print(f "Failed with {current_proxy}, move to the next one!")
Wie lassen sich die Proxy-Parameter am besten einstellen?
Denken Sie nicht, dass Sie Ihren Agenten an den Nagel gehängt haben, denn es steckt viel mehr dahinter:
| Parameterterm | empfohlener Wert | menschlich sprechen |
|---|---|---|
| Timeout | 8-15 Sekunden | Wenn Sie zu lange warten, wird das Essen kalt. |
| Wiederholungen | 3 Mal | die einzige Regel ist drei wert, falls etwas schief geht |
| Gleichzeitigkeit | ≤5 | sich überanstrengen |
Fokussierung auf ipipgo'sIntelligentes RoutingFunktion kann es automatisch den schnellsten Knotenpunkt wählen. Es ist wie ein Lieferjunge, der keine Anweisungen von Ihnen braucht und selbst weiß, welche Straße nicht durch den Verkehr blockiert ist.
Praktischer Leitfaden zur Vermeidung der Grube
1. begegnung403 VerbotenKeine Panik, es liegt wahrscheinlich am Request-Header. Denken Sie daran, einen richtigen User-Agent zu verwenden, nicht den Standard-Python-Agent.
2. die Daten plötzlich nicht mehr synchronisiert sind? Versuchen Sie, eine zufällige Hibernation zu Ihrem Code hinzuzufügen.Der menschliche Betriebsrhythmus
3. ipipgo'sexklusiver IP-PoolGeeignet für Hochfrequenz-Zugangsszenarien, wie z.B. gecharterte Internet-Cafés, die keine Angst vor anderen Personen haben, die die Geschwindigkeit des Internets rauben
Ich bin sicher, dass Sie sich darüber wundern.
F: Ist es in Ordnung, einen kostenlosen Proxy zu verwenden?
A: Bruder, die kostenlosen sind die teuersten! Diese öffentlichen Proxy-Pools sind schon lange ausgereizt, neun von zehn können keine Verbindung herstellen, und der verbleibende ist langsamer als eine Schnecke.
F: Warum empfehlen Sie ipipgo?
A: Seine FamilieWohn-IPDer Grad der Tarnung ist sehr hoch, der tatsächliche Test von 200 aufeinanderfolgenden Anfragen nicht auslösen, den Wind zu kontrollieren. Im Gegensatz zu einigen Serverraum IP, einmal verwendet, um erkannt werden.
F: Wie wird die Häufigkeit der Datenerfassung kontrolliert?
A: Es wird empfohlen, mit den 5 gleichzeitigen Kanälen von ipipgo alle 30 Sekunden einen Bestand zu prüfen, so dass Sie 10 pro Minute prüfen können, was sowohl effizient als auch sicher ist.
Tipps für den Weg auf die Straße
Ein letzter Trick: Nehmen Sie ipipgo'sAgentenlisteSpeichern Sie sie in Redis und wählen Sie sie nach dem Zufallsprinzip aus, wenn Sie sie verwenden. In Kombination mit einer Bibliothek für asynchrone Anfragen kann die Geschwindigkeit mehr als verdreifacht werden. Achten Sie aber darauf, den API-Schlüssel und die Proxy-Konfiguration nicht zu Tode zu schreiben, die Verwendung von Umgebungsvariablen ist sicherer.

