2010-04-29 12 views
2

Mon application a besoin de fonctionnalités de scrap web. J'ai un objet URL qui télécharge toutes les données. Mais j'ai besoin de gratter de nombreuses pages et je crée de nombreux objets URL, donc j'ouvre beaucoup de connexions. Comment l'optimiser, donc je peux avoir une connexion et naviguer uniquement vers d'autres pages avec?Comment naviguer avec URLConnection?

Vive

+0

La connexion est fermée lorsque les données ont été téléchargées. C'est le protocole HTTP. Il n'y a pas moyen de contourner cela. – Finbarr

+0

La plupart des serveurs Web prennent en charge les connexions persistantes. Cela accélère les choses lors du téléchargement des ressources (images, css ...) pour une page. – Guillaume

Répondre

0

Pour autant que je peux dire, vous devez avoir un URLConnection différent pour chaque URL (ce qui est logique que la connexion réseau sous-jacent doit changer aussi bien). Je doute sérieusement que la création de cet objet soit votre goulot d'étranglement; Je soupçonne que c'est le temps du réseau, mais sans profil, il est difficile de savoir avec certitude.

Pour une quantité modérée de pages, je considérerais une file d'attente de travail (disons en utilisant un ExecutorService). Pour un grand nombre de pages, je pourrais même regarder dans une version Java de Map/Reduce. Edit: Pour que Map/Reduce soit meilleur qu'une simple file d'attente de travail, vous devez disposer de plusieurs ordinateurs pour effectuer le scraping.