Todas las colecciones
FAQ
¿Por qué Octoparse sólo recopila la última página y nunca se detiene?
¿Por qué Octoparse sólo recopila la última página y nunca se detiene?
Actualizado hace más de una semana

La extracción de datos de varias páginas mediante la paginación es muy común, ya que la mayoría de las veces necesitarás más de una página de datos para tu proyecto.

Si has tenido este tipo de problemas con Octoparse, sigue raspando la última página y parece que no puede detenerse, es probable que Octoparse aún pueda encontrar y hacer clic en el botón "Siguiente" incluso cuando llega a la última página. Generalmente nos referimos a esto como el problema del "bucle sin fin".

Hay dos formas de solucionarlo. Puede configurar condiciones para forzar el final del ciclo de paginación o modificar el XPath manualmente para que Octoparse ya no detecte el botón "Siguiente" cuando está en la última página.

1. Configurar la condición de finalización del bucle - "Terminar el bucle cuando"

La opción "Terminar el bucle cuando" te permite forzar el final del bucle de paginación después de repetirlo una determinada cantidad de veces, por ejemplo, si deseas extraer las primeras 50 páginas de datos, puedes configurar 49 como el número de repetición, luego Octoparse hará clic en el botón "Siguiente" 49 veces y luego saldrá del bucle de paginación cuando llegue a la página 50.

Esta es una manera fácil y eficaz de resolver el problema si sabes la cantidad exacta de páginas de las que te gustaría obtener datos. Sigue los pasos a continuación para configurar las condiciones del bucle final:

1) Haz clic en el bucle de paginación y abre la configuración del paso

2) Marca la casilla e ingresa un número para el número de repeticiones

mceclip1.png

3) Haz clic en "Aceptar" para guardar la nueva configuración

2. Modicar XPath

Si el problema no se puede resolver configurando una condición de finalización de bucle, es posible que debas modificar el XPath del bucle de paginación. Octoparse usa XPath para ubicar cualquier elemento en la página, incluido el botón "Siguiente". Normalmente, Octoparse puede generar el XPath de forma automática y precisa, sin embargo, es posible que debas revisar el XPath manualmente de vez en cuando. Por ejemplo, en el caso de un bucle sin fin, deberás escribir un XPath que pueda ubicar el botón "Siguiente" con precisión en todas las páginas excepto en la última página.

Tips!

  • Cuando necesites trabajar con XPath, generalmente recomendamos usar Firepath, que es una extensión de FireBug. Firebug ahora solo está disponible para versiones anteriores de Firefox (por ejemplo, Versión 54), haga clic aquí para obtener las versiones anteriores de Firebox y este post sobre cómo instalar FireBug y Firepath. Alternativamente, también puedes consultar algunas de las otras herramientas XPath enumeradas en el tutorial: Qué es XPath y cómo usarlo en Octoparse.

Usemos un ejemplo para mostrarte cómo escribir un XPath que funcione para este propósito.

Como puedes ver en las dos capturas de pantalla a continuación, el botón "Siguiente" se encuentra en un XPath generado automáticamente por el complemento Firepath, tanto en la primera página como en la última página.

En la primera página:

first_page.jpg

En la última página:

last_page.jpg

Ahora, necesitamos encontrar la diferencia entre el botón en la primera y la última página y utilizar esa diferencia para escribir el XPath. Podemos hacer clic derecho en el botón en Chrome para inspeccionar el código HTML del botón.

first_page1.jpg

En la última página

last_page1.jpg

Observa cómo el código HTML de los botones es diferente. En el código de la última página, hay un atributo "aria-disabled".

Luego, aprovecharemos esta observación y escribiremos un nuevo XPath para localizar el botón "Siguiente" solo cuando no esté en la última página. El nuevo XPath es: //a[@class="pagination__next icon-link"][not(@aria-disabled)]

Simplemente ingresa el nuevo XPath en Xpath Helper para verificar si puede localizar el botón "Siguiente" tanto en la primera como en la última página.

En la primera página:

first_page2.jpg

En la última página:

last_page2.jpg

¡Estupendo! No tenemos nodos coincidentes en la última página y esto es exactamente lo que queremos: un XPath que seleccione con éxito el botón "Siguiente" en la primera página pero no en la última página. Por supuesto, siempre puede ser más preciso si compruebas si se puede seleccionar "Siguiente" en la página 2, en la página 3, etc.

Una vez que tengas listo el nuevo XPath, sigue los pasos a continuación para aplicar el nuevo XPath al bucle de paginación:

1) Ve a la configuración del elemento de bucle

2) Reemplaza el XPath original con el XPath revisado

change_Xpath.jpg

3) Haz clic en "Aceptar" para guardar la nueva configuración.

Si deseas obtener más información sobre la modificación de XPath, consulta nuestro tutorial de XPath aquí

.

En resumen, el problema del bucle sin fin no tiene por qué ser abrumador. Dependiendo de tus requisitos de raspado, puedes configurar condiciones para finalizar el bucle o revisar XPath para solucionarlo.

¿Ha quedado contestada tu pregunta?