• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

219
Vistas
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?

over 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

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.

over 3 years ago · Juan Pablo Isaza 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda