过滤掉标记属性或其CSS中具有“ display:none”的HTML元素

假设您有一些用Selenium抓取并用BeautifulSoup解析的html源:

from selenium import webdriver

from bs4 import BeautifulSoup

driver = webdriver.Firefox()

driver.get(url)

soup = BeautifulSoup(driver.page_source)

有没有一种方法可以从html代码或汤对象中删除所有具有以下内容的元素:

1.)style=display:nonehtml标记源中的属性(即<div style = 'display:none'>...</div>

要么

2.)display:none在页面的CSS中具有该属性

回答:

我想我记得曾经处理过这样的网站-IP地址是通过多个HTML元素在内部表示的,其中一些是通过display:

none样式隐藏的,有些则具有使它们不可见的适当CSS类。从这个混乱中获得真正的IP地址BeautifulSoup是非常困难的。

好消息是,selenium实际上处理这种使用情况下,只要你得到.textWebElement-它会返回你一个

元素的可见文本 是需要的到底是什么。

演示:

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

以上是 过滤掉标记属性或其CSS中具有“ display:none”的HTML元素 的全部内容, 来源链接: utcz.com/qa/420233.html

回到顶部