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

476
Views
Python y Selenium: cómo obtener valores generados por JavaScript

Uso Selenium en Python para raspar. No puedo obtener valores aunque estos valores se muestran en el navegador.

Entonces revisé el código fuente HTML, luego descubrí que no hay valores en HTML como se muestra a continuación.

HTML

 <div id="pos-list-body" class="list-body"> </div>

Pero hay valores cuando verifiqué la herramienta de desarrollador en Chrome.

Herramientas de desarrollo

 <div id="pos-list-body" class="list-body"> <div class="list-body-row" id="pos-row-1"> <div class="pos-list-col-1"> <input class="list-checkbox" type="checkbox" value="1"> </div> <div class="detail-data pos-list-col-2"> 1 </div> <div class="detail-data pos-list-col-3"> a </div> ... </div> <div class="list-body-row" id="pos-row-2"> <div class="pos-list-col-1"> <input class="list-checkbox" type="checkbox" value="2"> </div> <div class="detail-data pos-list-col-2"> 2 </div> <div class="detail-data pos-list-col-3"> b </div> ... </div> ... </div>

Parece que estos valores generados por JavaScript o algo así.

No hay iframe en el código sorce.

¿Cómo puedo obtener estos valores con Python?

Agradecería si pudieras darme alguna pista.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Si ID pos-list-body es único en HTML-DOM , entonces su mejor apuesta es usar explicit wait con innerText

Código:

 wait = WebDriverWait(driver, 20) print(wait.until(EC.presence_of_element_located((By.ID, "pos-list-body"))).get_attribute('innerText'))

Importaciones:

 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
about 4 years ago · Juan Pablo Isaza Report

0

Elemento.outerHTML

El atributo outerHTML del elemento obtiene el fragmento HTML serializado que describe el elemento, incluidos sus descendientes. También se puede configurar para reemplazar el elemento con nodos analizados de la cadena dada. Sin embargo, para obtener solo la representación HTML de los contenidos de un elemento, idealmente necesita usar la propiedad innerHTML en su lugar. Entonces, leer el valor de outerHTML devuelve un DOMString que contiene una serialización HTML del elemento y sus descendientes. Establecer el valor de outerHTML reemplaza el elemento y todos sus descendientes con un nuevo árbol DOM construido mediante el análisis del htmlString especificado.


Solución

Para obtener el html generado por JavaScript, puede usar la siguiente solución:

 print(driver.execute_script("return document.getElementById('pos-list-body').outerHTML"))
about 4 years ago · Juan Pablo Isaza Report

0

basado en otras respuestas que parecen no estar funcionando como una solución a su problema, queda una posibilidad que es que hay más de un elemento HTML en el DOM que tiene la ID: pos-list-body , y supongo que el primer elemento recuperado por este ID está realmente vacío y no es su elemento objetivo. Solución: intente seleccionar <div> usando Xpath en lugar de id, O obtenga todos los elementos con esta identificación en una lista e imprima el innerHTML de cada uno de ellos para obtener su índice de elementos objetivo.

about 4 years ago · Juan Pablo Isaza 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!