Estoy tratando de acceder a la tabla de anuncios desde esta página web . La tabla está en un iframe, cuyo contenido no es visible en la fuente cuando se carga la página. La tabla solo aparece en la fuente si inspecciono el elemento "dos veces". Una vez que la tabla esté visible, puedo ejecutar el siguiente código javascript a través de la consola de Chrome para acceder a la tabla.
document.getElementsByTagName('html')[0].getElementsByTagName('body')[0].getElementsByTagName('section')[4].getElementsByTagName('article')[0].getElementsByTagName('div')[2].getElementsByTagName('announcement_data')[0].getElementsByTagName('table')[0].getElementsByTagName('tbody')[0].getElementsByTagName('tr')Sin embargo, estoy luchando por encontrar una manera de hacer que los elementos dentro del iframe sean visibles mediante programación usando python y selenium. He intentado cambiar al iframe pero eso no ha ayudado.
seq = driver.find_elements_by_tag_name('iframe') print("No of frames present in the web page are: ", len(seq)) iframe = driver.find_elements_by_tag_name('iframe')[0] driver.switch_to.frame(iframe) table = driver.execute_script("return document.getElementsByTagName('html')[0].getElementsByTagName('body')[0].getElementsByTagName('section')[4].getElementsByTagName('article')[0].getElementsByTagName('div')[2].getElementsByTagName('announcement_data')[0].getElementsByTagName('table')[0].getElementsByTagName('tbody')[0].getElementsByTagName('tr');")Recibo el siguiente error si intento ejecutar el código anterior en mi cuaderno jupyter:
No of frames present in the web page are: 4 Error getting the length of the table: list index out of rangeSe agradecería cualquier sugerencia para acceder a la longitud y el contenido de la tabla.
Gracias.
Debería poder raspar la URL del iframe mediante programación y luego cargarla como una nueva página en Selenium.
https://www.asx.com.au/asx/v2/statistics/todayAnns.do es la URL del iframe.
Para hacerlo programáticamente prueba algo como esto:
url = driver.find_element_by_class_name('external-form__iframe default').get_attribute("src") driver.get(url)