我的简单需要。
如何查找网页上当前不可见的元素?我猜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">
因此,我首先担心的是,BeautifulGroup无法发现是否隐藏了上述任何文本框:
# 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。根据平台的不同,您有不同的选择。请查看Python WIki上的this page以获取一些想法,查看Web“库”和浏览器技术周围的Python包装。
对于BeautifulSoup,恐怕您需要显式检查用于隐藏元素的属性:
试试这个(bs4),对我有用:
。使用CSS2选择器选择方法: http://www.crummy.com/software/BeautifulSoup/bs4/doc/#css-selectors
相关问题 更多 >
编程相关推荐