spider screaming online frog example descargar crawler c++ web-crawler

c++ - screaming - web crawler online



¿Un web crawler/spider muy simple? (2)

Estoy tratando de hacer una aplicación de rastreo / araña web muy simple en C ++. Me han buscado en Google por uno simple para entender el concepto. Y encontré esto:

http://www.example-code.com/vcpp/spider.asp

Pero, es un poco complicado / difícil de digerir para mí.

Lo que estoy tratando de hacer es solo, por ejemplo:

ingrese la url: www.example.com (usaré bash-> wget, para obtener el contenido / código fuente)

luego, buscará, tal vez el enlace "a href", y luego lo almacenará en algún archivo de datos.

¿Algún tutorial simple, o directrices para mí?

Estoy empezando a aprender C ++ (1 mes)


Verifique este rastreador web y el indexador escrito en C ++ en: Mitza rastreador web El código se puede usar como referencia. Es limpio y proporciona un buen comienzo para un codificador webcrawler. Los diagramas de secuencia se pueden encontrar en las páginas de enlaces anteriores.


De acuerdo, intentaré apuntarte en la dirección correcta. Conceptualmente, un webcrawler es bastante simple. Gira en torno a una estructura de datos de cola FIFO que almacena las URL pendientes. C ++ tiene una estructura de cola incorporada en la biblioteca estándar, std::queue , que puede usar para almacenar URL como cadenas.

El algoritmo básico es bastante sencillo:

  1. Comience con una URL base que seleccione y colóquela en la parte superior de su cola
  2. Abre la URL en la parte superior de la cola y descárgala
  3. Analizar el archivo HTML descargado y extraer todos los enlaces.
  4. Insertar cada enlace extraído en la cola
  5. Vaya al paso 2, o deténgase una vez que alcance un límite específico

Ahora, dije que un webcrawler es conceptualmente simple, pero su implementación no es tan simple. Como puede ver en el algoritmo anterior, necesitará: una biblioteca de redes HTTP que le permita descargar URL y un buen analizador de HTML que le permitirá extraer enlaces. Usted mencionó que podría usar wget para descargar páginas. Eso simplifica un poco las cosas, pero aún es necesario analizar los documentos HTML descargados. Analizar HTML correctamente es una tarea no trivial. Una búsqueda de cadena simple para <a href= solo funcionará algunas veces. Sin embargo, si este es solo un programa de juguete que está utilizando para familiarizarse con C ++, una simple búsqueda de cadenas puede ser suficiente para sus propósitos. De lo contrario, debe utilizar una biblioteca de análisis HTML seria.

También hay otras consideraciones que debe tener en cuenta al escribir un webcrawler, como la cortesía. La gente se enojará y posiblemente prohibirá tu IP si intentas descargar demasiadas páginas, demasiado rápido, desde el mismo servidor. Por lo tanto, es posible que deba implementar algún tipo de política en la que su buscador web espere un breve período antes de descargar cada sitio. También necesita algún mecanismo para evitar volver a descargar la misma URL, obedecer el protocolo de exclusión de robots , evitar las trampas del rastreador, etc. Todos estos detalles se suman para hacer que la implementación de un webcrawler robusto no sea una cosa tan simple.

Dicho esto, estoy de acuerdo con larsmans en los comentarios. Un webcrawler no es la mejor manera de aprender C ++. Además, C ++ no es el mejor lenguaje para escribir un webcrawler. El acceso básico y de bajo nivel que se obtiene en C ++ es inútil al escribir un programa como un webcrawler, que pasa la mayor parte de su tiempo esperando que las URL se resuelvan y descargar. En mi opinión, un lenguaje de script de nivel superior como Python o algo es más adecuado para esta tarea.