Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo elegir un marco de rastreo al desarrollar un rastreador web

Cómo elegir un marco de rastreo al desarrollar un rastreador web

Alguien preguntó, ¿debería elegir Nutch, Crawler4j, WebMagic, scrapy, WebCollector u otros para desarrollar un rastreador web? Aquí hay una charla aleatoria basada en mi experiencia:

Los rastreadores mencionados anteriormente se pueden dividir básicamente en 3 categorías:

1. Rastreadores distribuidos: Nutch

2 . Rastreadores independientes de JAVA: Crawler4j, WebMagic, WebCollector

3. Rastreadores independientes que no son de JAVA: Scrapy

Categoría 1: rastreadores distribuidos

Adoptar rastreadores distribuidos principalmente. resuelve dos problemas:

1) Gestión masiva de URL

2) Velocidad de la red

El rastreador distribuido más popular ahora es Nutch de Apache.

1) Nutch es un rastreador diseñado específicamente para motores de búsqueda. Lo que la mayoría de los usuarios necesitan es un rastreador que pueda realizar un rastreo de datos preciso (extracción fina). Dos tercios del conjunto de procesos que ejecuta Nutch están diseñados para motores de búsqueda. La extracción fina no significa mucho. Dicho esto, utilizar Nutch para la extracción de datos desperdicia 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 y cambiará a Nutch más allá del reconocimiento. Las personas que tienen la capacidad de modificar Nutch realmente preferirán reescribir un marco de rastreo distribuido.

2) Nutch depende de hadoop para ejecutarse, y hadoop en sí 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 rastreador independiente.

3) Aunque Nutch tiene un mecanismo de complemento, se promociona como algo destacado. Puede ver algunos complementos de Nutch de código abierto que brindan capacidades de extracción sofisticadas. Pero cualquiera que haya desarrollado complementos de Nutch sabe lo aburrido 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 detallados. Nutch no proporciona los puntos de montaje enchufables correspondientes 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 detallados de Nutch están montados en el punto de montaje del "analizador de páginas" (analizador). Este punto de montaje se utiliza en realidad para analizar enlaces (proporcionar URL para rastreo posterior) y proporcionar cierta facilidad de uso para los motores de búsqueda. Información extraída de la página web (metainformación de la página web, texto de texto).

4) Utilice Nutch para el desarrollo secundario de rastreadores. El tiempo necesario para escribir y depurar rastreadores suele ser más de diez veces mayor que el de los rastreadores independientes. El costo de aprendizaje para comprender el código fuente de Nutch es alto, sin mencionar la necesidad de que un equipo lea y comprenda el código fuente de Nutch. Durante el proceso de depuración, encontrará varios problemas además del programa en sí (problemas de hadoop, problemas de hbase).

5) Mucha gente dice que Nutch2 tiene gora, que puede conservar datos en archivos avro, hbase, mysql, etc. Mucha gente realmente entiende mal que los datos persistentes mencionados aquí se refieren a la información de URL almacenada en avro, hbase y mysql (datos necesarios para la administración de URL), no a los datos estructurados que desea extraer. Para la mayoría de las personas, no importa dónde se encuentre la información de la URL.

6) La versión de Nutch2 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 una versión de hbase alrededor de 0.90 y, en consecuencia, debe reducir la versión de hadoop a alrededor de 0.2. El tutorial oficial de nutch2 es más detallado. Es más probable que se malinterpreten los tutoriales oficiales de nutch2. Hay dos tutoriales para Nutch2, a saber, Nutch1.x y Nutch2.x. El sitio web oficial de Nutch2.x está escrito para admitir hbase 0.94. Pero, de hecho, este Nutch2.x se refiere a una versión anterior a Nutch2.3 y posterior a Nutch2.2.1. Esta versión se actualiza continuamente en el SVN oficial. Y es muy inestable (modificado todo el tiempo).

Por lo tanto, si no planeas ser un buscador, intenta no elegir Nutch como rastreador. A algunos equipos les gusta seguir la tendencia y eligen a Nutch para desarrollar rastreadores de extracción fina. De hecho, vienen aquí debido a la reputación de Nutch (el autor de Nutch es Doug Cutting, por supuesto, el resultado final suele ser un retraso en la finalización del proyecto). .

Si quieres ser un buscador, Nutch1.x es una muy buena opción. Nutch1.x se puede combinar con solr o es para formar un motor de búsqueda muy potente. Si debe utilizar Nutch2, se recomienda esperar hasta que se lance Nutch2.3. El Nutch2 actual es una versión muy inestable.