¿Cómo puedo convertir este JavaScript en Python para obtener todos los elementos secundarios del padre?
Este script obtiene todos los elementos del sitio google.com a través de la consola
e = document.getElementsByTagName('body')[0].children for (let i = 0; i < e.length;i++){ console.log(e[i].tagName) }En python traté de hacer esto, pero no puedo
import time import requests import pandas as pd from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.firefox import options from selenium.webdriver.firefox.options import Options option = Options() option.headless = True driver = webdriver.Firefox(executable_path=r'C:\geck\geckodriver.exe') driver.get('https://www.google.com.br/') body = driver.find_element_by_tag_name('body') childrens = body.childrens for i in childrens: print(i.tagName) driver.quit()Comandos utilizados para instalar paquetes:
pip install pandas pip install bs4 pip install selenium pip install requests¿Cómo puedo obtener los nombres de los elementos de una etiqueta de cuerpo en python?
Para convertir este JavaScript en Python para obtener todos los elementos secundarios del padre
e = document.getElementsByTagName('body')[0].children for (let i = 0; i < e.length;i++){ console.log(e[i].tagName) } de una manera simple y crujiente, solo necesita pasar el JavaScript dentro de execute_script() de la siguiente manera:
driver.get("https://www.google.com.br/") driver.execute_script(""" e = document.getElementsByTagName('body')[0].children for (let i = 0; i < e.length;i++){ console.log(e[i].tagName) } """)Instantánea de la consola:
Puede usar body.find_elements_by_xpath("./child::*") para obtener todos los elementos secundarios en el cuerpo como objeto WebElement y luego obtener su nombre de etiqueta accediendo al atributo tag_name
import time import requests import pandas as pd from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.firefox import options from selenium.webdriver.firefox.options import Options option = Options() option.headless = True driver = webdriver.Firefox(executable_path=r'C:\geck\geckodriver.exe') driver.get('https://www.google.com.br/') body = driver.find_element_by_tag_name('body') childrens = body.find_elements_by_xpath("./child::*") for i in childrens: print(i.tag_name) driver.quit()