Una de las cosas más importantes para construir un rastreador es diseñarlo de tal manera que supere la falla.
Debe esperar que falle y compilarlo de manera que esté bien. Lo que significa que tienes que construir componentes independientes.
Usar Mechanize dentro de un ciclo de solicitud de respuesta seguramente hará el trabajo; pero sepa qué, se produce un error de red en algún momento, a veces una página no responde y a veces se obtiene una imagen que no está en la etiqueta esperada. Todo esto termina claramente en el error del programa, deteniéndose o bloqueándose.
- ¿Qué marco debo aprender para Javascript para aplicaciones web?
- ¿Qué es Quizzera.in? ¿Cómo se relaciona con IITJ?
- ¿Cuál es el costo aproximado de crear una aplicación web progresiva?
- ¿Por qué las aplicaciones de gestión de proyectos no son más innovadoras?
- ¿Cuál es el mejor enfoque para construir un sitio web dada la API RESTful existente?
Lo último que debería ser su trabajo debería ser seguir buscando estos errores y seguir ejecutando el script una y otra vez hasta que ya no falle, lo que puede llevar mucho tiempo.
Probablemente debería usar un marco como Scrapy, y diseñar tres componentes diferentes: rastreador, extractor y sintetizador – Los tres con sus propias fuentes de datos separadas que se alimentan entre sí – Para un raspador a gran escala, para extraer datos de forma regular, una instancia de Redis (con Pub / sub) o un ZMQ estaría bien. Pero para una extracción única, probablemente pueda hacerlo solo con una base de datos SQLite.
La separación de las preocupaciones es muy importante. Un rastreador debe tener una fuente de datos (una tabla) que sea una lista de todas las páginas para raspar y usted debe poder ejecutarlo independientemente y cualquier cantidad de instancias que desee, para acelerarlo (Scrapy proporciona esta infraestructura). Un extractor debería poder usar estas páginas raspadas y extraer los datos de interés en un modelo de extracción de datos. Y el sintetizador podría ejecutarse en el modelo de datos extraído para masajearlo como desee y actualizarlo donde desee.
Otra cosa más importante. – Sus programas deberían poder manejar todos y cada uno de los errores. – Registre todos los errores y deje que el programa continúe ejecutándose. Mire los registros del programa para corregir errores y volver a ejecutarlos en el conjunto de datos.