Pregunta

Mi aplicación necesita algunas funciones raspado web. Tengo objeto URL que descarga todos los datos. Pero necesito para raspar muchas páginas y puedo crear muchos objetos URL así que abrir muchas conexiones. Cómo optimizarlo, para que pueda tener una conexión y sólo navegar a otras páginas con él?

Saludos

¿Fue útil?

Solución

Por lo que yo puedo decir, que debe tener un URLConnection diferente para cada URL (que tiene sentido ya que la conexión de red subyacente debe cambiar también). Tengo serias dudas de que la creación de este objeto es su cuello de botella; Sospecho que es la hora de la red, pero sin perfil es difícil saber con certeza.

Para una cantidad moderada de páginas, lo consideraría una cola de trabajo (decir utilizando un ExecutorService ). Para un gran número de páginas, podría incluso mirar en una versión Java de map / reduce .

Editar: Para map / reduce a ser mejor que una cola simple trabajador, es necesario tener varios ordenadores disponibles para hacer el raspado

.

Otros consejos

Se puede usar Apache HTTP componentes , que tiene un montón de características, incluyendo un administrador de conexión de soporte < a href = "http://hc.apache.org/httpclient-3.x/threading.html" rel = "noreferrer nofollow"> acceso concurrente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top