Red de Respuestas Legales - Derecho empresarial - ¿Qué marco de rastreo es mejor para que Java implemente rastreadores web?

¿Qué marco de rastreo es mejor para que Java implemente rastreadores web?

Alguien preguntó, ¿debería elegir Nutch, Crawler4j, WebMagic, scrapy, WebCollector u otros para desarrollar un rastreador web? Aquí, según mi experiencia, es una tontería:

Los reptiles mencionados anteriormente se pueden dividir básicamente en tres categorías:

1. Rastreadores distribuidos: Nutch

2. Rastreador único JAVA: Crawler4j, WebMagic, WebCollector.

3. Rastreadores independientes que no son JAVA: scrapy

La primera categoría: reptiles distribuidos

Los rastreadores utilizan rastreadores distribuidos para resolver principalmente dos problemas:

p>

1) Gestión masiva de URL

2) Velocidad de la red

El rastreador distribuido más popular ahora es Nutch de Apache. Pero para la mayoría de los usuarios, Nutch es la peor opción entre estos rastreadores por las siguientes razones:

1) Nutch es un rastreador diseñado para motores de búsqueda y la mayoría de los usuarios necesitan un rastreador para rastrear (extraer) datos precisos. Nutch ejecuta un conjunto de procesos, dos tercios de los cuales están diseñados para motores de búsqueda. No tiene mucho sentido para una extracción fina. En otras palabras, utilizar Nutch para extraer datos perderá mucho tiempo en cálculos innecesarios. Y si intenta hacer que Nutch sea adecuado para el negocio de extracción fina a través del desarrollo secundario, básicamente destruirá el marco de Nutch, cambiará a Nutch más allá del reconocimiento y tendrá la capacidad de modificar Nutch. Realmente es mejor reescribir usted mismo un marco de rastreo distribuido.

2) Nutch se ejecuta en hadoop, lo que a su vez consume mucho tiempo. Si la cantidad de máquinas del clúster es pequeña, la velocidad de rastreo no será tan rápida como la de un solo rastreador.

3) Nutch tiene un mecanismo de complemento, que se promociona como un punto destacado. Puede ver algunos complementos de Nutch de código abierto, que proporcionan funciones de extracción finas. Pero cualquiera que haya desarrollado complementos de Nutch sabe lo desagradable que es el sistema de complementos de Nutch. El uso del mecanismo de reflexión para cargar y llamar complementos hace que sea extremadamente difícil escribir y depurar programas, y mucho menos desarrollar sistemas de extracción complejos y sofisticados sobre ellos. Además, Nutch no proporciona un punto de montaje enchufable correspondiente para una extracción fina. El complemento Nutch solo tiene cinco o seis puntos de montaje, y estos cinco o seis puntos de montaje sirven a los motores de búsqueda y no proporcionan puntos de montaje para una extracción fina. La mayoría de los complementos de extracción refinados de Nutch están montados en el punto de montaje del "analizador". En realidad, se utilizan para analizar enlaces (proporcionar URL para su posterior rastreo) y proporcionar a los motores de búsqueda información de páginas web fácilmente extraídas (metainformación y. texto textual de la página web).

4) Utilice Nutch para el desarrollo secundario de rastreadores. El tiempo necesario para la compilación y depuración del rastreador suele ser más de diez veces mayor que el de un rastreador de una sola máquina. Aprender el código fuente de Nutch es muy costoso, y mucho menos hacer que todos los miembros del equipo comprendan el código fuente de Nutch. Durante el proceso de depuración, ocurrirán varios problemas (problemas de hadoop, problemas de hbase) además del programa en sí.

5) Mucha gente dice que Nutch2 tiene gora, que puede conservar datos en archivos avro, hbase, mysql, etc. De hecho, mucha gente lo entendió mal. Los datos persistentes mencionados aquí se refieren al almacenamiento de información de URL (datos necesarios para la administración de URL) en avro, hbase y mysql. Estos no son los datos estructurados que desea extraer. De hecho, para la mayoría de las personas, no importa dónde se almacene la información de la URL.

La versión Nutch 2 actualmente no es apta para desarrollo. La versión estable oficial de Nutch es nutch2.2.1, pero esta versión viene incluida con gora-0.3. Si desea usar hbase con nutch (la mayoría de la gente usa nutch2 solo para usar hbase), solo puede usar hbase alrededor de la versión 0.90, y la versión de hadoop debe reducirse a aproximadamente 0.2 en consecuencia. Y el tutorial oficial de nutch2 es engañoso. Hay dos tutoriales para Nutch2, a saber, Nutch1.x y Nutch2.x, que están escritos para admitir hbase 0.94. Pero, de hecho, Nutch2.x se refiere a la versión anterior a Nutch2.3 y posterior a Nutch2.2.1, que los funcionarios de SVN actualizan continuamente. Y es muy inestable (se modifica constantemente).

Por lo tanto, si no planeas ser un motor de búsqueda, intenta no elegir Nutch como rastreador. A algunos equipos les gusta seguir la tendencia y tienen que elegir a Nutch para desarrollar los rastreadores Jingti. De hecho, está dirigido a la reputación de Nutch (Nutch fue escrito por Doug Kading. Por supuesto, el resultado final suele ser un retraso en el proyecto).

Si quieres ser un motor de búsqueda, Nutch1.x es una muy buena opción. Nutch1.x y solr o es pueden formar un motor de búsqueda muy potente. Si debe utilizar Nutch2, se recomienda esperar hasta que se lance Nutch2.3. Nutch2 es actualmente una versión muy inestable.