En este tutorial, le mostraremos cómo raspar publicaciones de un grupo Reddit. 

Para continuar, es posible que desee utilizar esta URL en el tutorial: 

https://www.reddit.com/r/startups/

Rasparemos datos como el autor, título, artículo, el número de votos y comentarios con Octoparse.

Este tutorial también cubrirá:

  • Maneje la paginación al desplazarse hacia abajo en Octoparse
  • Trate con AJAX para abrir cada publicación de Reddit
  • Localice todas las publicaciones modificando el modo de bucle y XPath en Octoparse

 

Estos son los pasos principales de este tutorial:

  1. "Ir a la página web " - abre la página web de destinoa"
  2. Establezca "Desplazarse hacia abajo" - cargue todos los elementos desde una página
  3. Cree un "Elemento de bucle" - haga clic en cada elemento de cada lista
  4. Extraer datos - seleccione los datos para la extracción
  5. Personalice el campo de datos modificando XPath - mejore la precisión del "Loop item" y los datos extraídos
  6. Inicie la extracción - ejecute la tarea y obtenga datos

 

 

1."Ir a la página web " - abre la página web de destinoa"

Haga clic en "+ Tarela página web" para iniciar una tarea usando el Modo avanzado

El modo avanzado es un modo de raspado web altamente flexible y potente. Para las personas que desean rascarse de sitios web con estructuras complejas, como Reddit, recomendamos el Modo avanzado para comenzar su proyecto de extracción de datos.

  • Pegue la URL en el cuadro "Sitio web" y haga clic en "Guardar URL" para continuar

 

input_url.gif

  • Si encuentra que el sitio web de destino no puede cargarse correctamente, haga clic en "Setting" en la esquina superior izquierda y seleccione "Safari 9.3.2" en el menú desplegable de "Browser"
  • Click "Save"

 

setting.gif

 

2. Establezca "Desplazarse hacia abajo" - cargue todos los elementos desde una página

Para algunos sitios web como Reddit.com, hacer clic en el botón de la página siguiente para paginar no es una opción para cargar contenido. Para cargar completamente las publicaciones, debemos desplazar la página hacia abajo de forma continua.

  • Configure "Desplazarse hacia abajo", marque la casilla "Desplazarse hacia abajo hasta la parte inferior de la página cuando termine de cargar"
  • Establezca "1" para "Scroll times", "3" para "Intervalo" y luego seleccione "Desplazarse hacia abajo hasta la parte inferior de la página" para "Forma de desplazamiento"

 

Al ingresar el valor en el cuadro "Scroll times", Octoparse desplazará automáticamente la página hacia abajo hasta ciertos momentos. En este tutorial, ingresamos "1" para una demostración. Al configurar "Scroll times", debe probar ejecutar la tarea para ver si ha asignado suficientes tiempos. Teóricamente, cuanto mayor sea el número que ingrese, más datos obtendrá si la tarea funciona correctamente.

       "Intervalo" es el intervalo de tiempo entre cada dos pergaminos.

  • Haga clic en "OK" para guardar

 

 

 

3. Cree un "Elemento de bucle" - haga clic en cada elemento de cada lista

  • Seleccione el título del primer elemento de la lista.
  • Haga clic en "Seleccionar todo" en el panel "Action Tips" 
  • Seleccione "Loop haga clic en cada elemento"

Octoparse detectará automáticamente publicaciones similares en la página actual. Las publicaciones seleccionadas se resaltarán en verde con otras publicaciones resaltadas en rojo. Si encuentra que ha seleccionado algunos elementos que no quería o no seleccionó lo que desea, puede modificar más tarde la XPath del "Loop item".

  • Configure la carga AJAX para la acción "Hacer clic en elemento"

 

Reddit aplica la tecnología AJAX para mostrar contenido de publicaciones y comentar temas. Por lo tanto, debemos configurar la carga AJAX para el paso "Click Item".

  • Desmarque la casilla "Reintentar cuando la página permanezca sin cambios (use discretamente para cargar AJAX)" y "Abra el enlace en una pestaña nueva"
  • Marque la casilla "Cargar la página con AJAX" y configure el tiempo de espera de AJAX (el tiempo suficiente para que se cargue la página)
  • Haga clic en "OK" para guardar

 

loop_item.gif

¡Consejos!

Más sobre cómo tratar con AJAX en Octoparse

 

 

 

4. Extraer datos - seleccione los datos para la extracción

Después de hacer clic en "Loop haga clic en cada elemento", Octoparse abrirá la primera publicación.

  • Haga clic en los datos que necesita en la página.
  • Seleccione "Extraer texto del elemento seleccionado" en el panel "Consejos de acción"

extractdata_updated.gif

  • Cambie el nombre de los campos seleccionando de la lista predefinida o ingresando por su cuenta

 

fieldnames.gif

 

 

5. Personalice el campo de datos modificando XPath - mejore la precisión del "Loop item" y los datos extraídos

Una vez que hagamos clic en "Loop clic en cada elemento", Octoparse generará un elemento de bucle utilizando el modo de bucle "Lista fija" de forma predeterminada. "Lista fija" es un modo de bucle utilizado para tratar con una cantidad fija de elementos.

Sin embargo, el número de publicaciones en Reddit.com no es fijo, sino que aumenta con el desplazamiento hacia abajo. Para permitir que Octoparse capture todas las publicaciones, incluidas las que se cargarán más adelante, necesitamos cambiar el modo de bucle a la "Lista de variables" e ingresar un XPath adecuado para tener todas las publicaciones ubicadas.

 

  • Seleccione el cuadro "Loop Item" 
  • Seleccione"Variable list" e ingrese: 

//div[contains(@class,'Post')and not(contains(@class,'promoted'))]//h3 

  • Haga Click en "OK" para guardar 

variable_list.gif

 

Si comienza la extracción de datos ahora, es posible que más tarde falten algunos datos en el archivo de salida. Para mejorar la precisión de los datos extraídos, le recomendamos que personalice el campo de datos.

  • Seleccione "Extraer datos" en el flujo de trabajo
  • Seleccione el campo de datos que desea personalizar y luego haga clic en el icono "Personalizar campo de datos"
  • Ingrese la XPath modificada para el cuadro de texto"Matching XPath" 
  • Haga clic en "OK" para guardar

 

Aquí hay algunos XPath modificados para su referencia, puede copiarlos para pegarlos en el "XPath coincidente" respectivamente:

  1. Título: //div[@class="_2SdHzo12ISmrC8H86TgSCp _29WrubtjAcKqzJSPdQqQ4h "]/h1
  2. Author: //div[@data-test-id='post-content']//a[contains(@href,'/user/')]
  3. Tiempo: //div[@data-test-id='post-content']//a[contains(@data-click-id,'timestamp')]
  4. Comentatio: //div[@data-test-id='post-content']//a[contains(@data-click-id,'comments')]
  5. Contenido: //div[@data-test-id='post-content']//div[contains(@class,'Text')]
  6. Votos: //DIV[@id='overlayScrollContainer']//button[@aria-label="upvote"]/following-sibling::div

 

modify_xpath_of_extact_data.gif

¡Consejos!

1. "Lista fija" y "Lista de variables" son modos de bucle en Octoparse. Para obtener más información sobre los modos de bucle en Octoparse:


2. Si desea obtener más información sobre XPath y cómo generarlo, aquí hay algunos tutoriales relacionados que puede necesitar:

 

 

 

6. Inicie la extracción - ejecute la tarea y obtenga datos

  • Clic en “Guardar"
  • Haga clic en "Iniciar extracción" en el lado superior izquierdo
  • Seleccione "Extracción local" para ejecutar la tarea en su computadora, o seleccione "Extracción en la nube" para ejecutar la tarea en la nube (solo para usuarios premium)
  • Para un usuario premium, Cloud Extraction es muy recomendable.

 

start_extraction.gif

 

Ahora tienes los datos. Aquí está la salida de muestra.

sample_output.PNG

 

 

Para los sitios web que aplican el desplazamiento infinitivo hacia abajo, como Airbnb y Reddit, se sugiere que puede dividir la tarea en 2 tareas para que la tarea pueda funcionar correctamente para extraer los datos requeridos.

Primero puede crear una tarea para extraer las URL de los elementos de clic. Luego, puede ingresar esas URL extraídas para crear una nueva tarea para extraer datos.