Filtrado de elementos HTML que tienen ‘mostrar: ninguno’ como un atributo de etiqueta o en su CSS

Digamos que tiene alguna fuente html que ha sido raspada con Selenium, y analizada con BeautifulSoup:

from selenium import webdriver from bs4 import BeautifulSoup driver = webdriver.Firefox() driver.get(url) soup = BeautifulSoup(driver.page_source) 

¿Hay alguna forma de eliminar, desde el código html o el objeto de sopa, todos los elementos que tengan:

1.) el atributo style=display:none dentro del origen de la etiqueta html (es decir,

...

)

o

2.) tener la display:none propiedad dentro del CSS de la página

Creo que recuerdo haber tratado con un sitio web como este: la dirección IP estaba representada internamente a través de múltiples elementos HTML, algunos de ellos ocultos a través de la display: none tenía una clase de CSS apropiada que los hacía invisibles. Conseguir la dirección IP real de este lío a través de BeautifulSoup fue bastante difícil.

La buena noticia es que el selenium realidad maneja este caso de uso y siempre que obtenga el .text de un elemento .text , le devolverá un texto visible de un elemento que es exactamente lo que se necesita.

Manifestación:

 In [1]: from selenium import webdriver In [2]: driver = webdriver.Firefox() In [3]: driver.get("http://proxylist.hidemyass.com/") In [4]: for row in driver.find_elements_by_css_selector("section.proxy-results table#listable tr")[1:]: ...: cells = row.find_elements_by_tag_name("td") ...: print(cells[1].text.strip()) ...: 101.26.38.162 120.198.236.10 213.85.92.10 ... 216.161.239.51 212.200.111.198