Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

260
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda