Estoy tratando de extraer todo el texto traducido de varias páginas web. La página tiene que traducirse completamente antes de que comience el raspado y para hacerlo tengo que desplazarme por la página. Estoy usando Selenium con Edge y su función de traducción. El problema aquí es que solo traduce el texto que está visible y hay algunos textos que no se muestran hasta que se presionan algunos botones.
Este es mi código:
options = EdgeOptions() options.add_experimental_option('excludeSwitches', ['enable-logging']) options.use_chromium = True options.add_extension('adblock.crx') capabilities = DesiredCapabilities.EDGE prefs = { "translate_whitelists": {input_lang:output_lang}, "translate":{"enabled":"true"}} options.add_argument('--lang=en') options.add_experimental_option("prefs", prefs) driver = Edge(executable_path=PATH, options=options, desired_capabilities=capabilities) driver.maximize_window() driver.get(url) # This is to scroll through the page if input_lang != output_lang: total_height = int(driver.execute_script("return document.body.scrollHeight")) divisions = total_height // 20 for i in range(1, total_height, divisions): driver.execute_script("window.scrollTo(0, {});".format(i)) time.sleep(3) driver.execute_script(f"window.scrollTo(0, {total_height});") time.sleep(4)¿Hay alguna manera de encontrar todos los elementos ocultos con texto y hacer clic en ellos para que se vuelvan visibles? Cualquier ayuda será apreciada
Utilice element.getAttribute("textContent") en lugar de getText()
getText() usa innerText y considera la propiedad de visualización del elemento, si no se muestra, no se recuperará ningún contenido
Si bien textContent no le importa si se muestra el elemento, vuelve a intentar el contenido tal como está.