Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

178
Vistas
Scrape renderizado dinámicamente por objetos de desplazamiento

Me gustaría raspar la sección de trabajo de Linkedin, por ejemplo el siguiente enlace:

https://www.linkedin.com/jobs/search/?f_TPR=r86400&geoId=105080838&keywords=Full%20Stack&location=New%20York%2C%20United%20States

Como puede ver, tan pronto como se desplaza hacia abajo, la página carga más trabajos.

El efecto que estoy buscando es, quiero de alguna manera obtener una respuesta del sitio después de que se desplazó hasta el final, que contiene todos los trabajos posibles, para analizar usaré cheerio.

Lo que logré hacer usando js y nodejs es obtener solo la primera página, pero no más.

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

el primer paso sería obtener la cantidad de trabajos full-stack devueltos de su búsqueda:

número de resultados de trabajo

ahora que conocemos los atributos del elemento, podemos agarrarlo usando cheerio,

 let number_of_jobs = $("h1>small[class='jobs-search-results-list__text']").text()

Ahora, como dijiste,

La forma en que funcionan las publicaciones de trabajo de LinkedIn es cargar más trabajos si se desplaza hacia abajo en la barra del navegador

pero, cuando arrastra la barra varias veces, no se cargará automáticamente, mientras que tendría que hacer clic en un botón que dice 'Ver más trabajos'.

Así que aprovecharemos eso y usaremos un método try / except . La cantidad de trabajos devueltos por nuestra consulta determinará la cantidad de veces que arrastraremos el controlador usando selenium (no podemos usar cheerio aquí ya que es un analizador HTML). También puedes usar titiritero phantomJS .

 let i = 2 while (i <= int(no_of_jobs/25)+1): wd.execute_script(“window.scrollTo(0, document.body.scrollHeight);”) i = i + 1 try: wd.find_element_by_xpath ('/html/body/main/div/section/button').click() time.sleep(5) except: pass time.sleep(5)

Para obtener la lista de trabajos, usaríamos el nombre de la clase: jobs-search-results__list , que es exclusivo de la lista de trabajos, y recorreremos sus elementos li para cada trabajo.

lista de trabajos

de nuevo, usando selenio:

 let jobs_list = wd.find_element_by_class_name('jobs-search__results-list') let jobs = jobs_list.find_elements_by_tag_name('li')

Puede verificar la duración de los jobs y la variable number_of_jobs que configuramos al principio para asegurarse de que obtuvo todo.

Y eso es todo.


Puede usar cualquier API de controlador de cromo con esta lógica, recomendaría titiritero, pero aquí usé selenio ya que lo usó como una etiqueta.

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda