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

257
Views
Realice un seguimiento de los cambios dentro del elemento DOM con MutationObserver Python

Encontré un sitio web que ofrece puntajes de dardos. Cada vez que se publica una nueva partitura, me gustaría ser notificado.

 import time import selenium from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait URL = 'https://live.dartsdata.com/' driver = webdriver.Chrome('/Users/hjam/downloads/chromedriver') driver.get(URL) time.sleep(1) matches = driver.find_elements(By.XPATH, ".//*[@class='sr-match__wrapper srt-base-1 sr-ml-list__match']") matches[0].click()

Quiero recuperar los segundos hasta que comience el partido (no hay cajeros automáticos de partidos en vivo, pero la idea es la misma). Veo que este punto de datos se encuentra en

 seconds = driver.find_elements(By.XPATH, ".//*[@class='sr-lmt-0-ms-countdown__time srt-primary-7 srm-large']")[-1]

Ahora quiero usar un MutationObserver para rastrear los cambios de este elemento. Cada vez que cambia el elemento, quiero que se imprima. Usando el ejemplo de docs escribo lo siguiente

 driver.execute_script(""" const targetNode = document.querySelector('#content1 > div.sr-lmt-plus__comp.srm-double.srm-isLmt > div > div > div > div > div > div > div.sr-lmt-wrap > div > div.sr-lmt-22-state > div.sr-bb.sr-lmt-matchstatus.sr-ltr.sr-lmt-matchstatus--small > div > div > div.sr-lmt-matchstatus__slider.sr-slider-flex__slider > div > div > div.sr-lmt-setsports-ms-matchstatus__row.sr-lmt-setsports-ms-matchstatus__countdown-wrapper > div > div.sr-lmt-0-ms-countdown__row > div:nth-child(4)'); const config = { attributes: true, childList: true, subtree: true }; const callback = function(mutationsList, observer) { for(const mutation of mutationsList) { console.log('Time is ticking'); } }; const observer = new MutationObserver(callback); observer.observe(targetNode, config); """)

Esto no produce ningún error, pero no pasa nada. Debería imprimir continuamente 'el tiempo corre' en la Consola, ¿verdad?

ingrese la descripción de la imagen aquí

¿Qué estoy haciendo mal? ¿Y también existe la posibilidad de que la salida se imprima en mi script de python?

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

0

querySelectorAll no está activo. Devuelve representaciones de lo que era el dom y estás monitoreando esa instantánea. Debe usar getElementsByClassName para conectarse a un elemento en vivo.

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!