美丽的汤找到具有隐藏风格的元素

aba*_*rik 5 html python beautifulsoup

我的简单需求。如何查找当前在网页上不可见的元素?我在猜测style="visibility:hidden"或者style="display:none"是隐藏元素的简单方法,但 BeautifulSoup 不知道它是否隐藏。

例如,HTML 是:

Textbox_Invisible1: <input id="tbi1" type="text" style="visibility:hidden">
Textbox_Invisible2: <input id="tbi2" type="text" class="hidden_elements">
Textbox1: <input id="tb1" type="text">
Run Code Online (Sandbox Code Playgroud)

所以我首先担心的是 BeautifulSoup 无法确定上述任何文本框是否被隐藏:

# Python 2.7
# Import BeautifulSoup
>>> source = """Textbox_Invisible1: <input id="tbi1" type="text" style="visibility:hidden">
...  Textbox_Invisible2: <input id="tbi2" type="text" class="hidden_elements">
...  Textbox1: <input id="tb1" type="text">"""
>>> soup1 = BeautifulSoup(source)
>>> soup1.find(id='tb1').hidden
False
>>> soup1.find(id='tbi1').hidden
False
>>> soup1.find(id='tbi2').hidden
False
>>> 
Run Code Online (Sandbox Code Playgroud)

我唯一的问题是,有没有办法找出隐藏的元素?(我们还必须考虑复杂的 HTML,其中可能隐藏了具有元素的元素)

jco*_*ado 2

使用 BeautifulSoup,恐怕您需要显式检查用于隐藏元素的属性:

soup = BeautifulSoup(source)
tbi1 = soup.find(id='tbi1')
tbi2 = soup.find(id='tbi2')
print tbi1['style'] == 'visibility:hidden'
print tbi2['class'] == 'hidden_elements'
Run Code Online (Sandbox Code Playgroud)