Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

179
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!