python - Beautiful Soup 找到具有隐藏样式的元素

标签 python html 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">

所以我首先担心的是 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
>>> 

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

最佳答案

BeautifulSoup 是一个html 解析器,而不是浏览器。它对页面应该如何呈现、计算的 DOM 属性等一无所知,它正在检查尖括号的开始和结束位置。

如果您需要在运行时使用 DOM,最好使用浏览器自动化包,即可以启动浏览器、让浏览器使用页面,然后公开浏览器控件和计算出的 DOM 的东西.根据平台的不同,您有不同的选择。看看this page在 Python WIki 上寻找想法,查看 Python Wrappers around Web "Libraries"and Browser Technology 部分

关于python - Beautiful Soup 找到具有隐藏样式的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579383/

相关文章:

python - bs4 文档有什么问题?我无法运行 unwrap() 示例代码

python - pyqt 示例 : an image viewer 的奇怪结果

c# - POST 表单数据而不提交

jquery - 使用JQuery slice()和appendTo()显示另一个div中的数据

java - 使用 html 将 Java Slick 游戏放到网站上

python-3.x - 如何单击 "Next"按钮直到它不再存在 - Python、Selenium、Requests

python - 将多列值的出现次数汇总为 Pandas 数据框

python - ASCII IP 到主机字节顺序长

python - Python 中缺少关键字参数

python - 使用美汤正确解析空html标签