
Praktische Übungen zur Verwendung von Jsoup für das Crawling von Webseiten
Sensei ist es, in der Datenerhebung zu engagieren oder zu tun, wettbewerbsfähige Analyse, mit Java zu ruckeln ein Web-Crawler ist nur erforderlich. Heute werden wir Jsoup nehmen dieses Artefakt zu sagen, die sich auf die Lehre, wie man Proxy-IP verwenden, um zu vermeiden, von der Website schwarz gezogen werden. Unsere praktischen Fälle mit ipipgo home proxy service, ist die dynamische IP-Pool wirklich stabil.
Jsoup Grundlegende Konfiguration
Zuallererst müssen wir verstehen, wie man einen Proxy auf Jsoup setzt. Der Schlüssel ist, die Proxy-Parameter in das Connection-Objekt zu packen, der Code sieht so aus:
Dokument doc = Jsoup.connect("Ziel-URL")
.proxy("proxy.ipipgo.io", 9020)
.userAgent("Mozilla/5.0...")
.timeout(30000)
.timeout(30000); .get()
Beachten Sie, dass die Proxy-Methode mit der von ipipgo bereitgestellten Gateway-Adresse und dem Port gefüllt wird.Ich bin mir nicht sicher, ob Sie ein kostenloses 20-Millionen-Verkehrspaket für neue Benutzer erhalten können, aber ich denke, es reicht für die Testphase. Wenn Sie Probleme mit dem SSL-Zertifikat haben, denken Sie daran, das Zertifikat in connection.sslSocketFactory() zu konfigurieren.
Proxy IP Praktische Tipps
Die größte Angst beim Harvesting ist, dass Ihre IP blockiert wird! Dieses Mal müssen wir einen Proxy-IP-Pool zum Rotieren verwenden. Lassen Sie uns den Zufallszuweisungsmodus von ipipgo verwenden, der Code ist wie folgt geschrieben:
String[] proxyPool = {"s1.ipipgo.io:9010", "s2.ipipgo.io:9012"...} ;
Zufallswert rand = new Random() ;
Verbindung conn = Jsoup.connect(url)
.proxy(proxyPool[rand.nextInt(proxyPool.length)]); ;
ipipgo的住宅代理延迟基本控制在200ms以内,比那些代理靠谱多了。要是采集电商网站,记得设置3-5 Sekunden zwischen den AnfragenEs kommt zu oft vor, dass die Götter einen nicht retten können.
| Art des Problems | Verschreibung |
|---|---|
| Zeitüberschreitung der Verbindung | Ändern Sie die BGP-Zeile von ip ipgo |
| Zurück zu 403 | Cookies löschen + Stadtknoten ändern |
| Unvollständige Daten | CSS-Selektor prüfen + JS-Rendering öffnen |
Ein Leitfaden zur Vermeidung von Blitzeinschlägen in Schlaglöchern
Neulinge pflanzen am ehesten in diesen Bereichen:
- Es ist kein User-Agent gesetzt, und er wird als Crawler erkannt.
- Aufeinanderfolgende Anfragen von der gleichen IP-Adresse werden in die schwarze Liste aufgenommen.
- Dynamisch geladene Daten werden nicht erfasst
Mit ipipgo.Langlebige statische IPZusammen mit Selenium können Sie sich um das dynamische Laden kümmern, indem Sie den Proxy beim Starten des Browsers aufhängen:
System.setProperty("webdriver.chrome.proxy", "http://user:pass@s1.ipipgo.io:9010");
QA-Sitzung
F: Was sollte ich tun, wenn meine Proxy-IP plötzlich ausfällt?
A: Überprüfen Sie schnell das Guthaben des ipipgo Backstage-Pakets. Ihr Familienpaket schaltet automatisch auf den alternativen Kanal um, wenn es aufgebraucht ist.
F: Was ist der Unterschied zwischen einem kostenlosen und einem kostenpflichtigen Bevollmächtigten?
A: Vergleichen Sie die Erfahrungsversion von ipipgo mit der kommerziellen Version, die kommerzielle Version hat 3 Mal mehr IP-Überlebenszeit, und es gibt eine exklusive API-Extraktionsschnittstelle, so dass es nicht peinlich ist, die IP nicht extrahieren zu können.
F: Wie kann ich prüfen, ob eine Proxy-IP anonym ist?
A:Visit http://httpbin.org/ip, wenn er eine echte IP zurückgibt, bedeutet das, dass der Proxy nicht funktioniert. Bei Verwendung des High Stash Proxy von ipipgo werden die lokalen Informationen nicht weitergegeben.
Tipps zur Leistungsoptimierung
Wenn Sie schnell sammeln wollen, müssen Sie mit Multi-Threading zu spielen. Es wird empfohlen, Thread-Pool-Management, jeder Thread mit einem unabhängigen Proxy-IP zu verwenden. Hier ist ein Tipp: ipipgo API-Schnittstelle, um die IP-Liste in der blockierenden Warteschlange gespeichert zurück, der Thread, wie Sie es verwenden.
ExecutorService pool = Executors.newFixedThreadPool(10);
while(!urlQueue.isEmpty()){
pool.execute(()->{
String proxy = ipQueue.take();
// Erfassungslogik
});
}
Denken Sie daran, dieconnection.timeout(15000)Wenn Sie innerhalb von 15 Sekunden keine Antwort erhalten, geben Sie einfach auf und gehen Sie zur nächsten IP weiter.
Schließlich, mit ipipgo's benutzerdefinierte SDK kann eine Menge Dinge zu retten, haben sie die automatische IP-Ersatz und abnorme Wiederholungsversuch Mechanismus gekapselt. Vor allem, wenn dabei groß angelegte Sammlung, zuverlässiger als den Bau ihrer eigenen Räder, nachdem alle, professionelle Dinge müssen noch ein Profi zu tun.

