Фильтрация HTML-элементов, которые имеют «display: none» либо как атрибут тега, либо в их CSS

Допустим, у вас есть источник html, который был очищен с помощью Selenium и проанализирован с помощью BeautifulSoup:

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

Есть ли способ удалить из html-кода или суп-объекта все элементы, которые либо имеют:

1.) атрибут style=display:none в источнике тега html (т. <div style = 'display:none'>...</div> )

или

2.) имеют display:none свойство в CSS страницы

One Solution collect form web for “Фильтрация HTML-элементов, которые имеют «display: none» либо как атрибут тега, либо в их CSS”

Я думаю, что я помню, как я работал с таким веб-сайтом: IP-адрес был представлен внутренне через несколько элементов HTML, некоторые из них были скрыты с помощью display: none стиль, некоторые из них имели соответствующий класс CSS, который делал их невидимыми. Получить реальный IP-адрес из этого беспорядка через BeautifulSoup было довольно сложно.

Хорошая новость заключается в том, что selenium действительно обрабатывает этот прецедент и всякий раз, когда вы получаете .text из WebElement – он возвращает вам видимый текст элемента, который именно то, что нужно.

Демо-версия:

 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 
  • Новичок: как преодолеть Javascript кнопку «onclick», чтобы очистить веб-страницу?
  • Как сгенерировать сброс соединения программно?
  • Сделать Scrapy следовать ссылкам и собирать данные
  • используя scrapy для удаления веб-сайта asp.net с помощью кнопок javascript и ajax-запросов
  • Скремблирование нового сайта ESPN с использованием xpath
  • Как установить portia, приложение python из Github (Mac)
  • Scrapy Deploy не соответствует результату отладки
  • web.py: как получить параметр POST и параметр GET?
  • Python - лучший язык программирования в мире.