过滤掉标记属性或其CSS中具有“ display:none”的HTML元素
假设您有一些用Selenium抓取并用BeautifulSoup解析的html源:
from selenium import webdriverfrom 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中具有该属性
回答:
我想我记得曾经处理过这样的网站-IP地址是通过多个HTML元素在内部表示的,其中一些是通过display:
none样式隐藏的,有些则具有使它们不可见的适当CSS类。从这个混乱中获得真正的IP地址BeautifulSoup
是非常困难的。
好消息是,selenium
实际上处理这种使用情况下,只要你得到.text
的WebElement
-它会返回你一个
元素的可见文本 是需要的到底是什么。
演示:
In [1]: from selenium import webdriverIn [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