
Des exercices pratiques vous apprennent à utiliser Jsoup pour faire de l'exploration de sites web.
Sensei est de s'engager dans la collecte de données ou de faire de l'analyse concurrentielle, l'utilisation de Java pour saccader un web crawler est juste nécessaire. Aujourd'hui, nous allons prendre Jsoup cet artefact pour dire, en se concentrant sur l'enseignement des gens comment utiliser l'IP proxy pour éviter d'être tiré par le site noir. Nos cas pratiques avec ipipgo home proxy service, le pool d'IP dynamique est vraiment stable.
Configuration de base de Jsoup
Tout d'abord, nous devons comprendre comment mettre un proxy sur Jsoup. La clé est de mettre les paramètres du proxy dans l'objet Connection, le code ressemble à ceci :
Document doc = Jsoup.connect("destination URL")
.proxy("proxy.ipipgo.io", 9020)
.userAgent("Mozilla/5.0...")
.timeout(30000)
.timeout(30000) ; .get()
Notez que la méthode proxy est remplie avec l'adresse de la passerelle et le port fournis par ipipgo.Je ne sais pas si vous pouvez obtenir un pack de 20M de trafic gratuit pour les nouveaux utilisateurs, mais je pense que c'est suffisant pour la phase de test. Si vous rencontrez des problèmes de certificat SSL, n'oubliez pas de configurer le certificat dans connection.sslSocketFactory().
Conseils pratiques sur l'IP Proxy
La plus grande crainte du harvesting est que votre IP soit bloquée ! Cette fois-ci, nous devons utiliser un pool d'IP proxy pour effectuer une rotation. Utilisons le mode d'allocation aléatoire d'ipipgo, le code s'écrit ainsi :
String[] proxyPool = {"s1.ipipgo.io:9010", "s2.ipipgo.io:9012"...} ;
Random rand = new Random() ;
Connexion conn = Jsoup.connect(url)
.proxy(proxyPool[rand.nextInt(proxyPool.length)]) ; ;
La latence du proxy résidentiel d'ipipgo est essentiellement contrôlée dans les 200 ms, ce qui est beaucoup plus fiable que ces proxys. Si vous collectionnez les sites de commerce électronique, n'oubliez pas de configurer3-5 secondes entre les demandesIl arrive trop souvent que les dieux ne puissent pas vous sauver.
| Type de problème | prescription |
|---|---|
| Délai de connexion | Modifier la ligne BGP de ip ipgo |
| Retour à 403 | Effacer les cookies + changer les nœuds de la ville |
| Données incomplètes | Vérifier le sélecteur CSS + ouvrir le rendu JS |
Un guide pour éviter la foudre dans les nids-de-poule les plus courants
Les débutants sont plus susceptibles de planter dans ces zones :
- Aucun User-Agent n'est défini et il est reconnu comme un crawler.
- Les demandes successives provenant de la même adresse IP sont mises sur liste noire.
- Les données chargées dynamiquement ne sont pas capturées
Avec ipipgo.IP statique de longue duréeAvec Selenium, vous pouvez prendre en charge le chargement dynamique, en suspendant un proxy lorsque vous démarrez le navigateur :
System.setProperty("webdriver.chrome.proxy", "http://user:pass@s1.ipipgo.io:9010") ;
Session d'assurance qualité
Q : Que dois-je faire si mon IP proxy tombe soudainement en panne ?
R : vérifiez rapidement le solde du forfait ipipgo backstage, leur forfait familial passera automatiquement à la chaîne alternative lorsqu'il sera épuisé, si cela ne fonctionne pas, contactez le service clientèle pour changer la clé d'autorisation.
Q : Quelle est la différence entre une procuration gratuite et une procuration payée ?
R : Si l'on compare la version expérimentale d'ipipgo avec la version commerciale, on constate que la version commerciale offre trois fois plus de temps de survie des droits de propriété intellectuelle et qu'elle dispose d'une interface d'extraction d'API exclusive, de sorte qu'il n'y a pas d'embarras à ne pas pouvoir extraire les droits de propriété intellectuelle.
Q : Comment vérifier si l'adresse IP du proxy est anonyme ?
R : Visitez http://httpbin.org/ip, s'il renvoie une adresse IP réelle, cela signifie que le proxy ne fonctionne pas. L'utilisation du proxy high stash d'ipipgo n'entraînera jamais de fuite des informations locales.
Conseils pour l'optimisation des performances
Si vous voulez collecter rapidement, vous devez jouer avec le multithreading. Il est recommandé d'utiliser la gestion d'un pool de threads, chaque thread ayant une IP proxy indépendante. Voici une astuce : l'interface API d'ipipgo permet de renvoyer la liste des IP stockées dans la file d'attente bloquante, les threads au fur et à mesure de leur utilisation.
ExecutorService pool = Executors.newFixedThreadPool(10) ;
while(!urlQueue.isEmpty()){
pool.execute(()->{
String proxy = ipQueue.take() ;
// Logique de capture
}) ;
}
N'oubliez pas de définirconnexion.timeout(15000)Si vous n'obtenez pas de réponse en plus de 15 secondes, abandonnez et passez à la PI suivante.
Enfin, l'utilisation du SDK personnalisé d'ipipgo peut permettre d'économiser beaucoup de choses, car il a encapsulé le remplacement automatique des adresses IP et le mécanisme de réessai anormal. En particulier lors de la collecte à grande échelle, il est plus fiable de construire ses propres roues, après tout, les choses professionnelles doivent toujours être faites par un professionnel.

